基本クラスにメソッドがオーバーロードされ、private/protectedとして継承された派生クラスがあると仮定します。基本クラスの宣言にオーバーロードされたメソッド
- オーバーロードされたメソッドの元のアクセスレベルの1つまたはいくつかだけを復元できますか?
- GCC 4.4.0では、基本メソッドを保護されたアクセスのもとに置いて、プライベートアクセスを使って継承しています。アクセスレベルを一般公開に戻そうとすると動作します。これはどうやって動作するのでしょうか?それともコンパイラのバグですか?私の理解では、アクセスレベルの復元は、メンバーのアクセスレベルの昇格や降格に使用できないようにすべきです。
コードスニペット:
class base {
public:
void method() {}
void method(int x) {}
protected:
void method2() {}
};
class derived : private base {
public:
base::method; // Here, i want to restore only the none parameterized method
base::method2; // method2 is now public??
};
BTW-は 'base :: method'と全く同じ' base :: method'のような宣言ですか? – Kos
@Kosですが、C++ 0xで 'base :: method;'と言うのはもはや有効ではありません。それはn3225ドラフトで削除されました。 –