我想在声明时给一个类赋值,所以我制作了这个基本类:
class A
{
public:
A &operator=(int)
{
return (*this);
}
};
并用这个 main 编译它:
int main(void)
{
A x = 1;
}
但是编译器提示这个错误信息:
no viable conversion from 'int' to 'A'
A x = 1;
^ ~
但是当我用这个 main 编译时:
int main(void)
{
A x;
x = 1;
}
一切顺利编译
为什么我的第一个主程序不编译,我如何更改类 A 以便它编译?
最佳答案
A x = 1;
是初始化,不是赋值;他们是不同的东西。它不调用赋值运算符但需要 converting constructor .
class A
{
public:
// converting constructor
A (int) {}
A &operator=(int)
{
return (*this);
}
};
然后
A x = 1; // initialize x via converting constructor
x = 2; // assign x via assignment operator
关于c++ - 在声明中为类赋值不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315087/