我写下了一个非常基本的宏, 它应该印出它的参数。
请见下文示例代码:
#define LOG Message(__FILE__, __LINE__,__func__)
class Message : public std::ostringstream
{
public:
Message(const char *param1, int param2, const char *param3)
{
*this<<param3<<"("<<param1<<":"<<param2<<")";
}
~Message()
{
*this<<endl;
cout<< rdbuf()->str();
}
};
int main()
{
int integer = 1;
string str = "XYZ";
LOG<<integer<<"DEBUGLOG1: "<<str<<" "<<integer;
return 0;
}
问题是如果我使用:
LOG << "LOG1: " << str << " " << integer;
输出打印 Const char* " LOG1: " 的地址*,而不是数值。
But, If I use:
LOG << integer << "DEBUGLOG1: " << str << " " << integer;
输出工作完美, 打印整数值和字符值 。
它看起来像是 而不是使用 ocream& 运算符 & lt; & lt; (Ostream& amp; 出去, const char* s);
它正在使用 ocream& 运算符 & lt; & lt; ( const void * val; code>?
有没有人能说明可以做些什么来克服这种超载问题?
提前感谢