类内静态常量成员的有关问题
类内静态常量成员的问题
问题一:
问题二:
下面的静态数据成员的声明和定义有错误吗?请解释原因。
这道题的rate部分的错误我已经解决了,方法就是在类外定义rate而不是类内。但是vector部分的错误是什么呢?
------解决思路----------------------
貌似只能定义整数类型的内部静态变量
------解决思路----------------------
推荐C++11的constexp
------解决思路----------------------
包含了构造函数的调用,是为初始化。而类内只能初始化整数类型的静态常量。
------解决思路----------------------
放到类的外面定义
问题一:
class Example {
public:
static const double rate = 6.5;//为什么这行是错的?
static const int vecSize = 20;//而这行是对的?
};
问题二:
下面的静态数据成员的声明和定义有错误吗?请解释原因。
// example.h
class Example{
public:
static double rate = 6.5;
static const int vecSize = 20;
static vector<double> vec(vecSize);
};
//example.c
#include "example.h"
double Example::rate;
vector<double> Example::vec;
这道题的rate部分的错误我已经解决了,方法就是在类外定义rate而不是类内。但是vector部分的错误是什么呢?
------解决思路----------------------
貌似只能定义整数类型的内部静态变量
------解决思路----------------------
推荐C++11的constexp
#include<vector>
class Example {
public:
static const double rate1;
static constexpr double rate2 = 6.5f;
static constexpr int vecSize = 20;
static std::vector<double> vec;
};
const double Example::rate1 = 6.5f;
std::vector<double> Example::vec(Example::vecSize);
int main() {
return 0;
}
------解决思路----------------------
static vector<double> vec(vecSize);
包含了构造函数的调用,是为初始化。而类内只能初始化整数类型的静态常量。
------解决思路----------------------
放到类的外面定义