Heim  >  Fragen und Antworten  >  Hauptteil

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

之前在 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 = "      "; // 六个空格
阿神阿神2714 Tage vor811

Antworte allen(2)Ich werde antworten

  • PHP中文网

    PHP中文网2017-04-17 11:15:17

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

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

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:15:17

    楼主需要了解下C++对象拷贝和赋值区别,以及语法上的细节差异

    Antwort
    0
  • StornierenAntwort