gpt4 book ai didi

c++ - 初始化模板内部类的静态成员

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

我对在类模板中初始化静态成员所需的语法有疑问。这是代码(我尽量减少它):

template <typename T>
struct A
{
template <typename T1>
struct B
{
static T1 b;
};

B<T> b;
typedef B<T> BT;
T val() { return b.b; }
};

template <typename T>
T A<T>::BT::b;

struct D
{
D() : d(0) {}
int d;
};

int main()
{
A<D> a;
return a.val().d;
}

使用g++,我得到的错误是:

error: too few template-parameter-lists

关于如何初始化 b 有什么想法吗?

请注意,我想保留 typedef,因为在我的真实代码中,B 比这复杂得多。

最佳答案

更改b的定义到以下内容:

template <typename T> template<typename T1>
T1 A<T>::B<T1>::b;

注意 typedef 和 B<T1>不一定指定相同的类型:虽然 typedef 依赖于 T被传递给 B , B<T1>依赖于模板参数 T1被通过。所以你不能使用 typedef此处指定 b 的定义在 B<T1> .

关于c++ - 初始化模板内部类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303067/

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