首页 > 开发 > C++ > 正文

对‘(std::string {aka std::basic_string<char>}) (int, char)’的调用没有匹配

2017-09-11 21:35:19  来源: 网友分享

之前在 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}) (int, char)’的调用没有匹配

有没有像 sidebar(6, ' ') 这样简洁实现跟下面一样效果的代码?

sidebar = "      "; // 六个空格

解决方案

#include <string>class something{public:    // -- 1    something(): sidebar(6, ' ') {}    void do_something()    {        // -- 2        sidebar =  string(6, ' ');    }private:    string sidebar;};

要么如 1 所示,在构造函数中初始化成员变量,这个特征叫「构造函数初始化列表」。
要么在成员函数中为其赋值,如 2 所示。