0

我用一些类创建了代码,这些类都派生自Object类并具有返回对象的virtual方法。object 只是一层之上,但也是基于 Object 并具有虚函数。reprBytesBytesvector<char>repr

所有类(包括Bytes)都有重载的方法operator bool() const。我试图用来std::ostream& operator<<(std::ostream& sstream, const Object& object)输出这些对象。但是当我尝试这样做时,我总是看到1i 而不是所有对象。我猜我所有的对象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功能之前有效。有可能修复它吗?

4

0 回答 0