C++11 将对象构造为ostream输出的一部分

C++11 将对象构造为ostream输出的一部分,c++11,object,ostream,construction,C++11,Object,Ostream,Construction,对于类声明,如下所示: class A{ public: A(int); ~A() private: int a; }; 和构造函数定义如下: A::A(int i){ a = i; cout << a << endl; } A::A(inti){ a=i; cout您不能声明obj并将其输出到同一行。如果希望打印后obj保持可用,请执行以下操作: A obj(i); cout << "The value is " << obj; 不能在

对于类声明,如下所示:

class A{
public:
A(int);
~A()
private:
int a;
};
和构造函数定义如下:

A::A(int i){
 a = i;
 cout << a << endl;
}
A::A(inti){
a=i;

cout您不能声明
obj
并将其输出到同一行。如果希望打印后
obj
保持可用,请执行以下操作:

A obj(i);
cout << "The value is " << obj;

不能在另一行中间有一个声明。

你可以做的是用casting
(A)i
动态创建一个A,或者简单的
A(i)
,这将把int
i
转换成A,然后将其发送到
cout
。然后直接丢弃临时A对象


如果您想保留它,您必须在它自己的语句中声明它的名称。

您需要首先在第一个代码行上输出消息“value is”。在第二个代码行上创建类型为a的对象obj,该对象将输出i

int main()
{
    int i;
    cout << "The value is ";
    A obj(i);
    return 0;
}
intmain()
{
int i;

cout@dasblinkenlight这不起作用,因为我在cout中使用(I)会得到错误“操作数到二进制无效”。
cout << "The value is " << A(i);
int main()
{
    int i;
    cout << "The value is ";
    A obj(i);
    return 0;
}