我对cpp比较陌生,我偶然发现了一个链接器故障,我无法追踪。
我正在尝试谷歌测试,并尝试将内联头示例(sample-3inl.h)重写为单独的源文件和头文件。
我的文件夹结构如下所示:
Project structure:
├── src
│ ├── queue.cpp
│ ├── queue.h
│ ├── CMakeLists.txt
├── test
│ ├── lib
│ │ ├── gtest
│ │ │ ├── googletest
│ ├── unit_test
│ │ ├── unit_test.cpp
│ │ ├── CMakeLists.txt
│ ├── CMakeLists.txt
├── main.cpp
├── CMakeLists.txt谷歌测试工作得很好,我已经用原始的sample-3inl.h试过了。
链接器故障错误:
Undefined symbols for architecture x86_64:
"Queue<int>::Enqueue(int const&)", referenced from:
QueueTest::SetUp() in dummy.cpp.o
"Queue<int>::Queue()", referenced from:
QueueTest::QueueTest() in dummy.cpp.o
"Queue<int>::~Queue()", referenced from:
QueueTest::QueueTest() in dummy.cpp.o
QueueTest::~QueueTest() in dummy.cpp.o
"Queue<int>::Size() const", referenced from:
QueueTest_IsEmptyInitially_Test::TestBody() in dummy.cpp.o
ld: symbol(s) not found for architecture x86_64为了简单起见,可以在下面的myqueue.cpp上找到源代码(unit_test.cpp、myQuee.h和页面 )。
现在我试着找出导致错误的原因,但是我找不到,真的想知道我做错了什么。谢谢你提前给我时间。
发布于 2016-01-08 07:54:10
我正在尝试Google,并尝试将内联头示例( sample -3inl.h)重写为单独的源文件和头文件。
你不能用模板来做这个。有关更多信息,请参阅为什么模板只能在头文件中实现?
https://stackoverflow.com/questions/34671987
复制相似问题