std :: ostream输错了

时间:2013-04-04 02:46:14

标签: c++ iostream virtual-functions

我已经创建了一些类的代码,这些类都派生自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函数之前有效。有可能解决它吗?

0 个答案:

没有答案