我已经创建了一些类的代码,这些类都派生自Object
类,并且virtual
方法repr
返回Bytes
个对象。 Bytes
对象只是vector<char>
上的一个图层,但也来自Object并具有虚拟repr
功能。
所有类(包括Bytes
)都重载了方法operator bool() const
。我正在尝试使用std::ostream& operator<<(std::ostream& sstream, const Object& object)
输出这些对象。但是当我尝试这样做时,我总是看到1
而不是所有物体。我想在发送到函数之前,我的所有对象都转换为bool
类型。
只有当我将函数用作静态库的一部分时才会发生。
如果我在int main(int argc, char** argv)
之前插入此功能的代码,一切顺利。我做错了什么?
如果有帮助,这是函数的代码。
std::ostream& operator<<(std::ostream& sstream,
const Object& object)
{
Bytes repr;
size_t length;
vector<char> stack;
repr = object.repr();
repr.copy(stack);
stack.push_back(0);
sstream << &stack[0];
return sstream;
}
但是我确定它不依赖于函数的代码,但可以依赖于它的声明。
提前致谢!
更新
似乎错误在其他任何地方。似乎函数的代码不包括在内,尽管我在静态库中有它(ar t libmyapp.a
显示它)。代码仅在main
函数之前有效。有可能解决它吗?