Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化头文件中的成员变量_C++_Initialization_Header Files - Fatal编程技术网

C++ 初始化头文件中的成员变量

C++ 初始化头文件中的成员变量,c++,initialization,header-files,C++,Initialization,Header Files,在头文件中初始化以下成员变量时,会收到编译警告 private: const std::string FILENAME = "prices.txt"; double *temp = new double[SIZE]; 警告:非静态数据成员初始值设定项仅适用于-std=c++11或std=gnu++11 我怎样才能最好地解决这个问题?我应该在头文件中声明变量,然后在构造函数中初始化它们吗 我怎样才能最好地解决这个问题?我应该在头文件中声明变量,然后在构造函数中初始化它们吗 对!!由于常量

在头文件中初始化以下成员变量时,会收到编译警告

private:
  const std::string FILENAME = "prices.txt";
  double *temp = new double[SIZE];
警告:非静态数据成员初始值设定项仅适用于-std=c++11或std=gnu++11

我怎样才能最好地解决这个问题?我应该在头文件中声明变量,然后在构造函数中初始化它们吗

我怎样才能最好地解决这个问题?我应该在头文件中声明变量,然后在构造函数中初始化它们吗

对!!由于
常量std::string
需要一个成员初始值设定项列表:

 MyClass::MyClass() 
 : FILENAME("prices.txt")
 , temp(new double[SIZE]) {
 }

编译器建议一种解决方案:向编译器添加
-std=c++11
标志以启用此c++11功能。这将增加很多其他的特性,使C++编程变得更加有趣。 如果您不选择切换到C++11,请在构造函数中使用初始值设定项列表:

MyClass() : FILENAME("prices.txt"), temp(new double[SIZE]) {}

注意:由于在动态内存区域中创建了
temp
,因此需要添加析构函数、复制构造函数和赋值运算符。您最好使用动态容器,例如数据的
std::vector
,因为它简化了内存管理代码。

顺便说一句,最好使用
std::vector
(或
std::array
)而不是原始指针。