何故かコンパイルできないプラグラム集です.
どなたか理由が分かる方がいたら,教えてください.

STLコンテナの継承にて(VC++7.1)

#include <vector>

using namespace std;

class Test : private vector<int>
{
public:
    Test(int num)
    {
        for(int i=0; i<num; i++)
            push_back(i);
    }
    unsigned int Size()
    {
        return size();
    }
};

//エラー
//'size': 識別子は、引数依存の照合を使用しても見つかりません。

vectorコンテナをプライベート継承したのですが,
vectorのpublicなメソッドがサブクラス内のメソッドから呼び出せません^^;
何故? push_backは呼べますね.g++だとコンパイルできます.

修正

include/vectorの中を読んでみました

size_type Size() const
    {    // return length of sequence
    return (_Myfirst == 0 ? 0 : _Mylast - _Myfirst);
    }

sizeメソッドがSizeメソッドになっちゃっています...
sizeに直したら動きました.

皆様のコメント

  • 7.1.3091ではビルドできたよ
    g 2005-10-31 18:35:45 (月)
  • そうですか.同じ環境なんですけどね.再インストールしてみますね.ありがとうございます.
    Naoki_I 2005-11-02 00:35:35 (水)

お名前: