2016-11-17 12 views
0

リンクテンプレートで使用するノードテンプレートを作成しようとしていますが、Node.hのコンストラクタが定義されていないというエラーが発生しています。私はNode.hファイルとVisual Studioで作成したNode.temファイルを持っています。 Node.hファイルは次のようになります。C++ LinkListとノードテンプレートのリンクエラー

#ifndef NODE_H 
#define NODE_H 

#include <cstdlib> 

template <class Type> 
class Node 
{ 
public: 
    Node(); 
    Node(Type indata); 

    Type data; 
    Node<Type>* next; 
    Node<Type>* prev; 

}; 
#include "Node.tem" 
#endif 

と私のNode.temファイルは次のようになります。いくつかのデバッグ後

template <class Type> 
Node<Type>::Node() 
{ 
    next = nullptr; 
} 

template <class Type> 
Node<Type>::Node(Type indata) 
{ 
    data = indata; 
    next = nullptr; 
} 

問題はリンクで私のalloc関数で発生のように、それが見えますコードのこのビットのリストテンプレート:

template <class Type> 
Node<Type>* LinkList<Type>::alloc(Type indata) 
{ 
    Node<Type>* dynamicNode = new Node(indata); //error occurs here 
    return dynamicNode; 
} 

私が得るエラーは以下のとおりです。

'Node': class has no constructorsこれは大きなプロジェクトのほんの一部であるよう 'Node': use of class template requires template argument list

main()コードはかなり大きいですが、必要であれば、私はそれを投稿することができます。

+0

あなたが実際にコンパイラエラーを取得している、またはこれは単にから来ていますインテリセンス? –

+0

@NathanMonteleoneはいコンパイラエラーが発生します。コンパイラのエラーは 'エラーC2514です: 'Node':クラスにコンストラクタがありません。 ' – kdubs

+0

@ pm100 VSに一意であるかどうかわかりません。私がヘッダーファイルにそれを含めないと、理論的に.hは.temファイルを "見る"ことができません。とにかくそれを見るようには見えませんが。 – kdubs

答えて

2

私はあなたがnew Node<Type>を忘れてしまったと思う:

Node<Type>* dynamicNode = new Node<Type>(indata); 

も、それはautoを使用するのがベストです:

auto dynamicNode = new Node<Type>(indata); 
+0

Omgはとても愚かです!それを指摘していただきありがとうございます、それは問題でした。 :) – kdubs

関連する問題