0

ostream 演算子の非メンバー関数のオーバーロードに標準形式を使用しようとしていますが、ベクトル反復子への内部割り当てがある場合、const の 2 番目の引数では機能しません。const 引数が使用されると、コンパイラは次のエラーを返します。

私のクラスの関連部分は次のとおりです。

class owBus{
    public:
        std::vector<owComponent> owCompList;    //unsorted complete list
        friend std::ostream& 
            operator<<(std::ostream& os, const owBus& bus );
};

非メンバー関数を使用:

std::ostream& operator<<(std::ostream& os, const owBus& bus ) {
    //iterate through component vector
    std::vector<owComponent>::iterator j;
    for(j=bus.owCompList.begin(); j!=bus.owCompList.end(); j++) {
    /*
        os << (*j).getComponentID() << ": ";
        os << (*j).getComponentType() << std::endl;
    */
    }
    return os;
}

const がフレンド宣言と関数記述の 2 番目の引数から削除されている場合、これは正常に機能します。それ以外の場合は、上記のエラーが発生します。クラスに定義された代入演算子はありませんが、それが違いを生む理由は明らかではありません。

4

1 に答える 1