C++中,模板类的常量静态成员函数的初始化问题
发布网友
发布时间:2023-07-12 19:26
我来回答
共4个回答
热心网友
时间:2024-12-04 06:09
你想声明什么类型的变量?
1.int型
声明一个静态常量,因为const常量只能在声明时初始化,所以你直接在类的private部分改为:
static const int x = 0;
然后把后面
template <class T>
int A<T>::x = 0;
去掉就可以了。
2.T型
声明一个静态常量,因为const常量只能在声明时初始化,所以你直接在类的private部分改为:
static const T x = 0;
然后把后面
template <class T>
int A<T>::x = 0;
去掉就可以了。不过会面临一个问题,不知道T具体的类型,用0去初始化它可能会不合适。
template <class T>
T追问还有,你好像没有明白我的意思。讲具体一点,我想写一个叫做color的模板类,里面有两个标志了颜色取值的上下界的静态常量;有可能通过两种类型实例化它,一个是unsigned char类型0~255, 还有float 类型0.0f~1.0f。因此上下界必须针对不同的类型设定不同的值,这个问题如何解决?
热心网友
时间:2024-12-04 06:09
你原来设计的是一个静态变量,不可以再给他赋值啊,你要赋值应该在类中赋值。
那个初始化,应该是在main函数中要用到该模板时直接用一个现实的类型代替T就可以了。
额,那个,还有啊,说一句,要用类中的私有元素只能通过类中的函数,或是构造函数实现,你在类外怎么能直接用啊。
热心网友
时间:2024-12-04 06:09
template<>
int A<int>::x=0;
template<>
float A<float>::x=1.0f;
热心网友
时间:2024-12-04 06:10
static const T x;
改成
static const int x;或者static const float x;