我用一些类创建了代码,这些类都派生自Object
类并具有返回对象的virtual
方法。object 只是一层之上,但也是基于 Object 并具有虚函数。repr
Bytes
Bytes
vector<char>
repr
所有类(包括Bytes
)都有重载的方法operator bool() const
。我试图用来std::ostream& operator<<(std::ostream& sstream, const Object& object)
输出这些对象。但是当我尝试这样做时,我总是看到1
i 而不是所有对象。我猜我所有的对象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
功能之前有效。有可能修复它吗?