gpt4 book ai didi

c++ - C++中的模板编程

转载 作者:行者123 更新时间:2023-11-30 01:31:01 25 4
gpt4 key购买 nike

我很难掌握在 C++ 中使用模板进行编程。

考虑以下文件。

C.h

#ifndef _C_H
#define _C_H

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

C.cpp

#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 文件中,或者在您的实现代码中包含一个额外的文件。

关于c++ - C++中的模板编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com