gpt4 book ai didi

c++ - 如何拥有带有类模板的结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:59 26 4
gpt4 key购买 nike

使用这段代码(只是一类测试):

typedef unsigned short UInt16;

template<class T>
class CClass
{
public:
SValue* getNewSValue(void);
private:
typedef struct {
T *mValue;
T *next;
T *previous;
UInt16 index;
} SValue;
};

template<typename T>
SValue* CClass<T>::getNewSValue(void)
{
return new SValue;
}

我有以下错误:

error C2143: syntax error : missing ';' before '*'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

是否可以在类中使用结构?如果我在类外声明结构,则模板看不到模板 T

最佳答案

$9.2/2- 关键是下面引自 C++ Standard03

`在类说明符的结尾 } 处,类被视为完全定义的对象类型 (3.9)(或完整类型)。在类成员规范中,类在函数体、默认参数和构造函数 ctor-initializers(包括嵌套类中的此类内容)中被认为是完整的。 否则在其自己的类成员规范中被视为不完整。

不知道什么是 UINT16,但下面的应该可以工作

template<class T> 
class CClass
{
private:
typedef struct {
T *mValue;
T *next;
T *previous;
short int index; // Replacing with int for illustration only
} SValue;
public:
SValue* getNewSValue(void);
private:
};

编辑 3:*** 试图进行更改(无论如何我都应该删除)

template<class T> typename CClass<T>::SValue* CClass<T>::getNewSValue(void) 
{
return new SValue;
}

int main(){
CClass<int> s;
s.getNewSValue();
}

关于c++ - 如何拥有带有类模板的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649358/

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