构造一个对象作为 ostream 输出的一部分



对于如下类声明:

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;
}

最新更新