STLコンテナの使用が許可されていない宿題に取り組んでいます。私のLinkedListの実装は、ポインタと一緒にチェーンされたノードの集合です。私はContinuousListと呼ばれる別のクラスを持っています。このクラスには、LinkedListというデータメンバがあり、そのノードには他のLinkedListのノードへのポインタが含まれています。私はNodeへのポインタを返す関数の戻り値をNodeへのポインタである変数に代入しようとしていますが、それは無効であると言っていますし、なぜ私はできないのか分かりませんそれ。エラーC2440: '=': 'ノード<ValueType> *'から 'ノード<ValueType> *'に変換できません。
template <typename ValueType>
struct Node
{
Node();
std::string m_key;
ValueType m_value;
Node<ValueType>* m_next;
};
リンクリストクラス:
template <typename ValueType>
class LinkedList
{
public:
Node<ValueType>* begin()
{
return m_head;
}
private:
Node<ValueType>* m_head;
};
ContinuousList:
template <typename ValueType>
class ContinuousList
{
public:
ValueType* iterate(std::string& key)
{
m_curr = m_collection.begin(); // Error occurs here
...
}
private:
LinkedList<Node<ValueType>*> m_collection;
Node<ValueType>* m_curr;
};
全エラーメッセージ
1> error C2440: '=' : cannot convert from 'Node<ValueType> *' to 'Node<ValueType> *'
1> with
1> [
1> ValueType=Node<bool> *
1> ]
1> and
1> [
1> ValueType=bool
1> ]
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1> while compiling class template member function 'bool *ContinuousList<ValueType>::iterate(std::string &)'
1> with
1> [
1> ValueType=bool
1> ]
1> see reference to class template instantiation 'ContinuousList<ValueType>' being compiled
1> with
1> [
1> ValueType=bool
1> ]
クラス宣言の最後にセミコロンがありません。コピー貼り付けエラーですか? –
どのコンパイラを使用していますか?あなたは完全なテストケースを投稿できますか? –
はい、それは無関係のコードビットを削除しようとしていたときにエラーに過ぎませんでした。私はWindowsでVisual Studio 2010を使用しています。私は完全にエラーメッセージのテキストをOPに追加しました。 ContinuousListを構築しようとするとコンパイラはすぐに失敗します test_results; –
flurry