C++模板打印对象名称
C++ template print object name
template <class T>
class mytemp {
public:
mytemp ();
print_name()
{
cout << "Name is: " << //?
}
};
mytemp<int> myobject ();
myobject.print_name()
我希望 print_name() 函数打印此类的名称,在本例中,打印Name is: myobject
.
我该怎么做?
您需要添加一个保存对象名称的成员变量。
我将假设您希望将其设为const
成员变量。如果是这样,你会做这样的事情:
#define CREATE_MYTEMP(x) mytemp<void> (x){#x}
template <class T>
class mytemp {
private:
string _name;
public:
mytemp(){}
mytemp(string name) : _name(name){}
void print_name() const
{
cout << "Name is: " << _name << endl;
}
};
要使用它,您必须在对象的构造中传递一个名称或使用CREATE_MYTEMP
:
mytemp<void> foo("foo");
CREATE_MYTEMP(bar);
foo.print_name(); //prints: "Name is: foo"
bar.print_name(); //prints: "Name is: bar"
如果使用默认 ctor,则名称为空:
mytemp<void> empty;
empty.print_name(); //prints: "Name is:"
相关文章:
- 如何仅使用对象名称打印特定于对象的成员
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数
- 打印抽象对象 c++
- 为什么平均打印数组元素比打印单个对象慢C++?
- 打印指向的对象
- 如何在 c++ 中打印存档中的对象向量
- 如何获取列表的每个对象并调用getName方法来打印其名称
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 将对象放入地图后打印对象
- 打印对象的映射,其中另一个对象作为键
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 如何在C++中打印对象向量的内容
- 打印出对象向量中的每个元素C++
- 对象数组打印空白字符串
- C++ - 打印派生类对象的矢量<base*> 元素
- C++ - 使用 std::list,如何打印对象的私有成员的链接列表?
- 未正确的校验和释放对象 - 打印时错误
- GDB:如何从子对象打印/调用父函数
- 从对象打印二维矢量时出错
- 从对象打印2D int向量