相关疑难解决方法(0)

为什么模板只能在头文件中实现?

引自C++标准库:教程和手册:

目前使用模板的唯一可移植方法是使用内联函数在头文件中实现它们.

为什么是这样?

(澄清:头文件不是唯一的便携式解决方案.但它们是最方便的便携式解决方案.)

c++ templates c++-faq

1660
推荐指数
14
解决办法
46万
查看次数

模板构建错误:体系结构x86_64的未定义符号:

我正在尝试使用模板类,当我在LWS中的一个文件中编译它时,它可以工作:http: //liveworkspace.org/code/a9c412a7e683439dfa35a9363749369d

但是当我尝试编译它由3个文件组成时,

stack.h第4到21行

stack.cpp第24到48行

main.cpp第49行结束

当我尝试编译这3个文件时,我得到了

Undefined symbols for architecture x86_64:
  "Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::push(Node**, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
      _main in ccCoizCT.o
  "Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::top(Node*&)", referenced from:
      _main in ccCoizCT.o
  "Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::pop(Node*&)", referenced from:
      _main in ccCoizCT.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

是的我在stack.cpp和main.cpp文件中包含了stack.h

c++

6
推荐指数
1
解决办法
6597
查看次数

标签 统计

c++ ×2

c++-faq ×1

templates ×1