C ++错误:无法匹配调用'(std :: string {aka std :: basic_string <char>})(unsigned int,char)

时间:2015-04-30 01:26:10

标签: c++ string c++11

当我想使用string::s(unsigned, char)分配s时,g ++会输出此错误消息。

有我的班级:

#include <string>
using std::string;

class Screen()
{
private:
    unsigned height = 0, width = 0;
    string contents;
public:
    Screen(unsigned ht, unsigned wd): height(ht), width(wd) {contents(ht * wd, ‘ ’);}
}

为什么这是错的?

我知道它应该是Screen(unsigned ht, unsigned wd): height(ht), width(wd), contents(ht * wd, ‘ ’){ },但为什么我不能使用函数string(unsigned, char)为构造的字符串赋值?

2 个答案:

答案 0 :(得分:3)

您尝试在operator()(unsigned, char)上致电std::string,但std::string没有重载的函数调用运算符。

如果要分配给它,则需要使用分配,例如contents = std::string(ht * wd, ' ');

答案 1 :(得分:1)

您的代码如下:

std::string contents;
int n = 10;
contents(10, '');

执行此操作时,不会调用std :: string&#39; s构造函数,并且std :: string中没有operator()。