初始化header-file中的成员变量

use*_*252 2 c++ initialization header-files

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

private:
  const std::string FILENAME = "prices.txt";
  double *temp = new double[SIZE];
Run Code Online (Sandbox Code Playgroud)

警告:非静态数据成员初始化程序仅适用于-std = c ++ 11或std = gnu ++ 11

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

das*_*ght 9

编译器建议一种解决方案:-std=c++11向编译器添加标志以启用此C++ 11功能.这将增加许多其他功能,使C++编程更加愉快.

如果切换到C++ 11不适合您,请在构造函数中使用初始化列表:

MyClass() : FILENAME("prices.txt"), temp(new double[SIZE]) {}
Run Code Online (Sandbox Code Playgroud)

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