gpt4 book ai didi

c++ - 在它的构造函数中 cout 一个实例

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:31 27 4
gpt4 key购买 nike

我知道这听起来很奇怪,并且有办法解决这个问题。但我只是想知道在 C++ 中是否可行。

class Item{
public:
string name;
Item(string input){
name = input
cout << this; // unfortunately the std::ostream& operator<<(std::ostream& outstream, Item* item) are not parsed by compiler yet. and this simply prints out its address.
cout << *this; //I don't know how to override `cout << Item`.
}
}

std::ostream& operator<<(std::ostream& outstream, Item* item){
outstream << item->name;
return outstream;
}

std::ostream& operator<<(std::ostream& outstream, Item& item){
outstream << item.name;
return outstream;
}

最佳答案

尝试以下操作

std::ostream & operator <<( std::ostream &outstream, const class Item &item );


class Item
{
public:
std::string name;
Item( const std::string &input ) : name( input )
{
std::cout << *this;
}
};

std::ostream & operator<<( std::ostream &outstream, const Item &item )
{
outstream << item.name;
return outstream;
}

或者如果数据成员名称将被定义为私有(private)那么你可以这样写

class Item
{
private:
std::string name;
public:
Item( const std::string &input ) : name( input )
{
std::cout << *this;
}
friend std::ostream & operator <<( std::ostream &outstream, const Item &item );

};

std::ostream & operator<<( std::ostream &outstream, const Item &item )
{
outstream << item.name;
return outstream;
}

重载运算符的方式相同

std::ostream & operator <<( std::ostream &outstream, const class Item *item );

如果你需要的话。然而实际上没有必要重载这个运算符。将对类对象的引用用作参数的运算符就足够了。

关于c++ - 在它的构造函数中 cout 一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com