类属类的界面与实现应该放在同一个文件模块中
来源:互联网 发布:jade软件使用 编辑:程序博客网 时间:2024/05/21 18:36
写了一个小程序,发现自己的一个知识点漏洞。比如说要写一个class C,通常我会写三个文件:C.h,C.cpp,main.cpp。这样写,一般没什么问题。可是,如果使用了类属机制,比如说在C.h中这样写:
template <class E>
class C
{
public:
C();
......
};
然后在main.cpp中这样写:
C<int> c;
那么,问题就出来了!你build的时候会提示:undefined reference to C<int>::C().
ok,原因在于类属类不能像普通类一样把类界面和类实现组织在不同文件模块中。高等教育出版社的《面向对象程序设计基础》给出了详细解释:由于C++语言的类属机制目前尚未形成统一的标准,不同的C++语言编译程序采用了不同的实现策略。诸如Microsoft Visual C++或Borland C++等编译程序都不允许在定义类属类的文件模块之外创建类属类的实例,编译程序并不为类属类的定义生成任何代码,仅当类属类实例化时才产生真正的代码。由于未实例化的类属类定义没有加入目标文件(.OBJ)中,当建立的可重用类库(.LIB)中包含类属类时会出现程序链接错误。这意味着带有模板的类必须拥有源程序才可重用,所以将类属类的界面与实现放在同一个文件模块中。
- 类属类的界面与实现应该放在同一个文件模块中
- C++中模板的声明和实现应该放在同一个文件中
- CSS文件在jsp 文件中应该放的位置
- C++中模板定义与声明为什么放在同一个文件中
- STL之二: 为什么模板函数的声明与实现都放在.h文件中
- c++模板类/模板函数的声明与定义应该放在头文件里
- c++模板类/模板函数的声明与定义应该放在头文件里
- c++模板类/模板函数的声明与定义应该放在头文件里
- c++模板类/模板函数的声明与定义应该放在头文件里
- c++模板类/模板函数的声明与定义应该放在头文件里
- 类的内联函数的实现应该放在哪里
- 类的内联函数的实现应该放在哪里
- 关于在python中, 在同一个project中的同一个目录里面, 导入模块的问题
- DLL文件应该放在哪里?
- 头文件中应该放些什么?
- 头文件中应该放些什么
- nginx多个项目放在不同的tomcat中,共享同一个端口
- 函数声明放在头文件中,函数的定义放在实现文件中,然后在主函数中调用
- javascript设置overflow-y
- Localization in XCode4
- 零值比较
- 感谢CSDN
- java线程的学习
- 类属类的界面与实现应该放在同一个文件模块中
- 20110918——light、dense、tense系列
- 华为2012吉大机试回顾
- HDU 2104 hide handkerchief
- 项目经理问:为什么总是只有我在加班 – 挂包袱现象
- linuxPS1配置
- 首遇空指针错误!
- 泛型:交换数组元素
- const用法