在声明中赋值 class 不编译
assigning class a value on declaration does not compile
我想在声明时为 class 分配一个值,所以我做了这个基本的 class:
class A
{
public:
A &operator=(int)
{
return (*this);
}
};
并用这个主要编译它:
int main(void)
{
A x = 1;
}
但编译器抱怨此错误消息:
no viable conversion from 'int' to 'A'
A x = 1;
^ ~
但是当我用这个 main 编译时:
int main(void)
{
A x;
x = 1;
}
一切顺利编译
为什么我的第一个主程序无法编译,我该如何更改 class 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
我想在声明时为 class 分配一个值,所以我做了这个基本的 class:
class A
{
public:
A &operator=(int)
{
return (*this);
}
};
并用这个主要编译它:
int main(void)
{
A x = 1;
}
但编译器抱怨此错误消息:
no viable conversion from 'int' to 'A'
A x = 1;
^ ~
但是当我用这个 main 编译时:
int main(void)
{
A x;
x = 1;
}
一切顺利编译
为什么我的第一个主程序无法编译,我该如何更改 class 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