私は私がちょうど上記のコードをビルドしようとするとエラーLNK2019:未解決の外部シンボル「パブリック:__thiscall
TEST_CLASS(LinkedListUnitTests)
{
public:
TEST_METHOD(Add_to_An_Empty_Linked_List)
{
LinkedListItem<int> item(1);
}
//private:
};
などのユニットテストを記述しようとしています
template <class T>
class LinkedListItem
{
public:
LinkedListItem(T value);
LinkedListItem(const LinkedListItem<T>& rhs);
T getValue(void);
LinkedListItem<T>& getNext(void);
void setNext(LinkedListItem<T>& next);
LinkedListItem<T>& operator=(const LinkedListItem<T>& rhs);
~LinkedListItem();
private:
T _value;
LinkedListItem& _next;
};
のようなクラスを持っています
エラーLNK2019:未解決の外部シンボル "public:__thiscall cpp :: libraries :: datastructures :: LinkedListItem :: LinkedListItem(int)"(0〜$ LinkedListItem @ H @ datastructures @ libraries) @ cpp @@ QAE @ H @Z)関数で参照? "公共:無効__thiscall CppLibrariesTests :: LinkedListUnitTests :: Add_to_An_Empty_Linked_List(無効)"(Add_to_An_Empty_Linked_List @ LinkedListUnitTests @ CppLibrariesTests @@ QAEXXZ)
私は、興味深いことにのVisual Studioに2012
を使用しています下のようなユニットテストクラスにテンプレートを追加すると、コンパイルエラーはなくなりますが、テストは検出されず、実行できません。
template<class T>
TEST_CLASS(LinkedListUnitTests){..}
私は非常に愚かな何かをやっている場合、私は驚かないだろうので、長い時間の後にC++をピックアップしようとしています。誰の考え?
[なぜテンプレートのみヘッダファイルに実装することができますか?]の可能な重複(http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in -the-ヘッダーファイル)。 –