gpt4 book ai didi

c++ - 类模板的静态数据成员

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:54 26 4
gpt4 key购买 nike

"A definition for a static data member may be provided in a namespace scope
enclosing the definition of the static member's class template."

意思是……

这是正确的吗......

namespace N{
template<typename T>class A{
public:
static int x;
static int fun();
};

}
namespace N1{
template<class T>int A<T>::x=10; }
namespace N2{template<class T>int A<T>::fun(){return 10;} }
int main(){ return 0; }

根据声明...我的程序是否正确...

否则……任何人都可以解释这个陈述……用一个程序……IT 是 ISO 标准 c++ 的要点。第 14.5.1.3 章,第 1 点

最佳答案

如果您查看标准,您应该会看到示例。

A definition for a static data member may be provided in a namespace scope enclosing the definition of the static member’s class template. [Example:

template<class T> class X {
static T s;
};
template<class T> T X<T>::s = 0;

—end example]

你的程序不正确因为

template<class T> A<int>::x=10;
template<class T> A<int>::fun(){return 10;}

没有使用模板参数 T(你是指 Ex 而不是 A?)。由于您正在专门化模板,因此您应该编写

template<> int Ex<int>::x = 10;
template<> int Ex<int>::fun() { return 10; }

在命名空间 N 内。(不在其他命名空间内,如 N1 或 N2。它必须在声明 Ex 的同一命名空间中定义。)

关于c++ - 类模板的静态数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491204/

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