template <class T>
class mytemp {
public:
mytemp ();
print_name()
{
cout << "Name is: " << //?
}
};
mytemp<int> myobject ();
myobject.print_name()
我希望print_name()函数打印此类的名称,在本例中为print Name is: myobject
。
我该怎么做?
答案 0 :(得分:0)
您需要添加一个包含对象名称的成员变量。
我将假设你想要成为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:"