我正在尝试创建一个异常类。为此,我重载了<<
运算符。所以代码是这样的
class RunAndCheck
{
opearator << (boost::any given)
{
//Here goes the value of the "given"
}
};
用法是这样的
RunAndCheck s;
s << file->open() << __FILE__ << __LINE__ ;
所以问题是我想知道 FILE 的类型,然后只有我才能从
boost::any
中提取字符串。有人可以唤起您对此的好奇心吗? 最佳答案
__FILE__扩展为字符串文字,就像您直接编写“/path/to/current/file.cpp”一样。字符串文字是不可修改的char数组左值。
您想要模板化<
class RunAndCheck {
public:
template<class T>
RunAndCheck& operator<<(const T& value) {
// ...
return *this;
}
};
或者您想为所有可接受的类型提供重载:
class RunAndCheck {
public:
RunAndCheck& operator<<(const char* value) {
// ...
return *this;
}
RunAndCheck& operator<<(int value) {
// ...
return *this;
}
};
关于C++ __FILE__宏的类型是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5065091/