当我想使用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)
为构造的字符串赋值?
答案 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()。