gpt4 book ai didi

c++ - 如何在同一个主文件中转发声明模板类,如模板函数

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

我想在同一个主文件中向前声明一个模板类,如模板函数。但是我得到一个错误,我的类有不完整的类型,不能定义。这是我的代码。

#include <iostream>

template <class T> class Foo;

int main()
{
Foo<int> ok;
std::cout << "Hello world!" << std::endl;
return 0;
}

template <class T>
class Foo
{
private:
int test;
public:
Foo() {test = 1;}
};

最佳答案

template <class T> class Foo;

这是一个好的开始。这是一个完美的前向声明。

Foo<int> ok;

不幸的是,此时编译器需要知道模板类实际上是什么。前向声明(forward declaration)不再足够。此时,编译器甚至不知道这个类有多大,所以它如何创建一个它不知道大小的对象?

前向声明足以声明指针或对类实例的引用(无论是常规类还是模板)。您不需要知道一个类有多大就可以声明一个指针或对它的引用。对于其他一些事情,您也不需要知道一个类有多大,但是前向声明不足以声明类本身的实例。此时必须定义类。

这与模板类无关。这适用于所有类、模板和常规类。

关于c++ - 如何在同一个主文件中转发声明模板类,如模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625332/

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