对于如下类声明:
class A{
public:
A(int);
~A()
private:
int a;
};
构造函数定义如下:
A::A(int i){
a = i;
cout << a << endl;
}
我想从main((做这样的事情:
int main(){
int i;
//user input for value
//stored inside i
cout << "The value is " << A obj(i);
return 0;
}
我现在在main((中收到上述代码的以下错误:
错误:"A"不引用值
此错误的原因是什么?
不能在同一行上声明obj
和输出。如果希望obj
在打印后保持可用,请执行以下操作:
A obj(i);
cout << "The value is " << obj;
否则,请跳过obj
而使用临时对象:
cout << "The value is " << A(i);
不能在另一行中间有声明。
你可以做的是用强制转换(A) i
即时创建一个A,或者干脆A(i)
,这会将int i
转换为A,然后将其发送到cout
。然后直接丢弃临时 A 对象。
如果你想保留它,你必须在它自己的声明中为它声明一个名称。
您需要首先在第一行代码上输出消息"值为 "。在第二个代码行上,创建类型 A 的对象 obj,它将输出 i。
int main()
{
int i;
cout << "The value is ";
A obj(i);
return 0;
}