C++ 打印对象名称而不是内存地址?
假设我有一个名为Foo()的类对象,并且只想通过传递打印函数Foo对象而不是Foo.name来返回Foo的名称。例如:C++ 打印对象名称而不是内存地址?,c++,oop,C++,Oop,假设我有一个名为Foo()的类对象,并且只想通过传递打印函数Foo对象而不是Foo.name来返回Foo的名称。例如: class Object { public: Object(); ~Object(); const char* name; }; 然后 这叫什么?我该怎么做?起初我想做一个操作符重载,但是没有操作符重载这个。。。还是有?不同的方法是可能的: 1) 执行此操作的通常方法是重载运算符可以在问题中添加Debug.Log函数吗?这只是一个任意函数。替换为p
class Object
{
public:
Object();
~Object();
const char* name;
};
然后
这叫什么?我该怎么做?起初我想做一个操作符重载,但是没有操作符重载这个。。。还是有?不同的方法是可能的:
1) 执行此操作的通常方法是重载运算符可以在问题中添加
Debug.Log
函数吗?这只是一个任意函数。替换为println或cout或其他内容。真的吗?谁否决了这一点?为什么?原因是参数类型会对处理转换所使用的运算符(如果有的话)产生影响。但是,如果您不需要帮助,请不要添加它。在您的场景中,我只会重载Debug的Log函数,通过访问其name变量来处理Object类型的参数。类型应该是Object,我认为这很明显?根据参数的类型,您可以使用转换运算符,但是类型很重要,因为不同的转换运算符有不同的缺点。我确实看到我可以重载
Debug.Log(myObject) //Should print the object name
class Object
{
public:
// ...
friend std::ostream& operator<< (std::ostream& stream, const Object& obj) {
[...]
}
};
class Printable{
virtual void Print() = 0;
}
void Log(const Printable& obj)
{
obj.Print();
}