繁体   English   中英

C ++中的模板编程

[英]Template programming in C++

我在使用C ++中的模板进行编程时遇到了麻烦。

考虑以下文件。

#ifndef _C_H
#define    _C_H

template <class T>
class C {
public:
    C();
    virtual ~C();
}
#endif _C_H

丙型肝炎

#include "C.h"

template <class T>
C<T>::C() {

}

template <class T>
C<T>::~C() {
}

我尝试在名为main.cpp的文件中实例化C的实例。

#include "C.h"

int main(int argc, char** argv) {
    C<int> c;
}

我收到以下错误。

main.cpp undefined reference to `C<int>::C()'

然后我跑

g++ -o C.o C.pp
g++ -o main.o main.cpp

但是得到错误

main.cpp: undefined reference to `C<int>::C()'
main.cpp: undefined reference to `C<int>::~C()'

我相信这可能是一个明显的错误,但是我是一个真正的初学者,因此希望能对您有所帮助。

谢谢!

使用模板时,要求在实例化类型时都必须提供源代码,因为否则编译器将无法检查模板代码是否适用于给定类型。 将其分为.cpp和.h文件将不起作用,因为其他.cpp文件仅知道.h文件。

基本上,您必须将所有内容都放在.h文件中,或者在实现代码中包括一个额外的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM