gpt4 book ai didi

c++ - 强制模板参数是一个结构

转载 作者:太空狗 更新时间:2023-10-29 21:30:41 24 4
gpt4 key购买 nike

我正在尝试做一个基本模板类,其中参数 T 必须是一个结构。

当我使用声明为 T 类型的变量时(无论是在模板类中还是在定义 T 的扩展类中),GCC 都无法编译它:

GCC error: invalid use of incomplete type ‘struct x'

尽管它在 VC 上工作,但我知道它不起作用,因为它不应该因为编译器不知道 T 代表的类型标准。

有没有办法明确表明类型必须是结构体?

我在 VC 中工作的代码是:

在基类中:

T* x
new T
sizeof(T)

在扩展它的那些中:

x->member

编辑:我尝试获取相关代码。在这里:

struct SomeStructureType
{
int memberA;
int memberB;
}

template <typename T> class Base
{

protected:

T* s;

void addMember(string name,void* offset);

Base()
{
s = new T;
}

};

class Extender : public Base<SomeStructureType>
{
public:

Extender()
{
addMember("memberA",&s->memberA);
}
}

最佳答案

大多数(如果不是全部)编译器提示使用“不完整”类型,问题在于尝试使用尚未完全定义的前向声明类。

对于不完整的类型,您可以做很多事情:定义接受或返回类型或对它的引用的函数,定义该类型的引用或指针变量……以及其他您不能做的事情:定义变量该类型,创建该类型的对象,调用任何方法或请求该类型的任何属性...

关于c++ - 强制模板参数是一个结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086538/

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