0

すべてObjectクラスから派生し、オブジェクトを返すvirtualメソッドを持ついくつかのクラスでコードを作成しました。object は のレイヤーにすぎませんが、これも Object に基づいており、仮想関数を備えています。reprBytesBytesvector<char>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機能します。それを修正することは可能ですか?

4

0 に答える 0