之前在 main 函数里,赋值 6 个空格给一个变量可以执行
int main(){ string sidebar(6, ' '); return 0;}
之后在类里面
class somethig{public: void do_something() { sidebar(6, ' '); // 或者是 sidebar = sidebar(6, ' '); // 都出错 }private: string sidebar;};
g++ 编译后就会出错
对‘(std::string {aka std::basic_string
有没有像 sidebar(6, ' ')
这样简洁实现跟下面一样效果的代码?
sidebar = " "; // 六个空格
解决方案
#include <string>class something{public: // -- 1 something(): sidebar(6, ' ') {} void do_something() { // -- 2 sidebar = string(6, ' '); }private: string sidebar;};
要么如 1 所示,在构造函数中初始化成员变量,这个特征叫「构造函数初始化列表」。
要么在成员函数中为其赋值,如 2 所示。