我有一个类,我希望当我将它作为printf / sprintf的参数提供时,它被用作特定的字符串(取决于类中正在进行的操作)。有可能吗?
printf("blah blah %s ", customclass);
如果没有任何类型的类型转换以及没有像customclass.xyz()那样的必要函数调用,我该怎么办呢?
答案 0 :(得分:4)
printf
是一个可变函数,不能以任何合理的方式用于用户定义的类型。
如果您使用的是C ++,则出于这种原因,您应该更喜欢流(例如std::cout
)到printf
。使用流,您可以重载<<
运算符:
class CustomClass
{
public:
int x;
int y;
};
ostream &operator<<(ostream &os, CustomClass c)
{
os << "{" << c.x << "," << c.y << "}";
return os;
}
...
CustomClass customclass;
customclass.x = 5;
customclass.y = 7;
std::cout << customclass << "\n";
答案 1 :(得分:0)
我认为这会奏效。
cout << "blah blah " << typeid(customclassobject OR customclass).name() << endl;
更新:如果你想打印类的成员(类似于Java中的toString(),那么Oli Charlesworth的答案是正确的。