【发布时间】:2016-07-21 05:58:21
【问题描述】:
我有这样的课
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;
};
我正在尝试编写类似的单元测试
TEST_CLASS(LinkedListUnitTests)
{
public:
TEST_METHOD(Add_to_An_Empty_Linked_List)
{
LinkedListItem<int> item(1);
}
//private:
};
当我尝试构建上面的代码时,我得到了一个丑陋的错误 -
错误 LNK2019:未解析的外部符号“公共:__thiscall cpp::libraries::datastructures::LinkedListItem::LinkedListItem(int)”(??0?$LinkedListItem@H@datastructures@libraries@cpp@@QAE@H @Z) 在函数“public: void __thiscall CppLibrariesTests::LinkedListUnitTests::Add_to_An_Empty_Linked_List(void)”中引用 (?Add_to_An_Empty_Linked_List@LinkedListUnitTests@CppLibrariesTests@@QAEXXZ)
我正在使用 Visual Studio 2012。
有趣的是,如果我像下面这样在单元测试类中添加模板,编译错误就会消失,但测试没有被发现,我无法运行它们。
template<class T>
TEST_CLASS(LinkedListUnitTests){..}
我在很长一段时间后尝试学习 C++,所以如果我做了一些非常愚蠢的事情,我不会感到惊讶。有什么想法吗?
【问题讨论】:
标签: c++ templates visual-c++