掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ATLのインターフェイスを非表示にするには (ID:55240)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
/* んー、こんな感じかな? Windows2000sp4/VC++6.0sp6/Console/cpp 1.スーパークラスは全部protectedにします。 これにより、スーパークラスのインスタンス作成すら禁止されます。 2.サブクラスでprivate継承すれば、それ以上継承したとしても、 スーパークラスへのアクセス権がなくなります。 3.スーパークラスの処理を使用したいときは、 サブクラス側でそのための窓口を作ってやります。 試しに、Implement::printA()、Implement::printB()を コメントアウトしてコンパイルしてみてください。 エラーになるはずです。 */ class InterfaceA{ protected: InterfaceA(){} virtual ~InterfaceA(){} void printA(){ std::cout << "InterfaceA" << std::endl; } }; class InterfaceB{ protected: InterfaceB(){} virtual ~InterfaceB(){} void printB(){ std::cout << "InterfaceB" << std::endl; } }; class Implement : private InterfaceA, private InterfaceB{ public: Implement(){} virtual ~Implement(){} void printA(){ // オーバーライドしないとアクセスが拒否される InterfaceA::printA(); } void printB(){ // オーバーライドしないとアクセスが拒否される InterfaceB::printB(); } void printC(){ std::cout << "Implement" << std::endl; } }; int main() { Implement in; in.printA(); in.printB(); in.printC(); return 0; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.