C++で "super"を使う

C++で "super"を使う

私のコーディングスタイルには次のイディオムが含まれます: class Derived:public Base{public:typedef Base super;// note that it could be hidden in// protected/private section, instead…


c++ - ベースクラスから派生したATL COMクラスを作成するには?

「ATLシンプルオブジェクト」ウィザードは、新しいクラスが既存のコクラスとそのインターフェイスから派生したものであることを指定する方法を提供しません。 Visual Studio 2008では、既存のものから派生した新しいATL COMクラスを作成するにはどうすればよいですか(つまり、 BaseはIBaseを実装し、 IDerivedはIBaseから派生したIBaseを実装するBaseからDe…


c++ - 基本クラスからの仮想関数呼び出し

私たちは持っていると言う: Class Base{virtual void f(){g();}; virtual void g(){//Do some Base related code;}}; Class Derived:public Base{virtual void f(){Base::f();}; virtual void g…


c++ - 基本クラスの保護された関数を呼び出すことはできませんか?

私は私の基本クラスで保護された関数を呼び出すことはできません。 どうして? これは次のようになります。 class B:B2{public: virtual f1(B*)=0; protected: virtual f2(B*){codehere();}} class D:public B{public: virtual f1(B*b){return f2…


c++ - クラス内の派生情報のメンバ関数

クラスのインターフェイスを設計する際、私は通常、他のメンバ関数の組み合わせを使用して計算/導出できるメンバ関数を提供する必要があるかどうかを、2つの心で捉えます。 例えば: class DocContainer{public: Doc* getDoc(int index) const; bool isDocSelected(Doc*) const; int getDocC…


C++では、構造体からクラスを派生させることはできますか

問題は本当にそれをすべて言う。 私は構造体からクラスを派生させることができましたか、または私の構造体を埋め込むクラスを作成し、コピーコンストラクタとその2つの間を移動する=演算子を定義する必要がありますか?…


c++ - オーバーライドされた関数からオーバーライドされた関数を呼び出す

クラスBの仮想関数foo()があるとします。クラスBの派生クラスの1つで少し違う振る舞いが必要です。オーバーライド関数D:: foo()を作成してB:: foo()を呼び出しても問題ありません)そこから、特別扱いの後に? このような: void D::foo(){if(/*something*/)// do something else B::foo();…



C++スタイル:オーバーライドされたメソッドに仮想キーワードをプレフィックスする

私は、オーバーライドされたメソッドにvirtualキーワードを付けるか、元の基底クラスでのみ接頭辞を付けるかについて、同僚と議論してきました。 私はすべての仮想メソッド(つまり、vtable参照を含むメソッド)にvirtualキーワードを接頭する傾向があります。 私の理論的根拠は三倍です: C++にoverrideキーワードがないことを考えると、virtualキーワードの存在は少なくとも…


C#内部ベースクラスから派生型の名前を取得する

私は、基本クラスでマウスイベントを処理する際の問題をトラブルシューティングしています。 ブレークポイントはマウスイベントのトラブルシューティングではうまく機能しないので、デバッグ出力をイベントハンドラに追加したいと思います。 しかし、基本クラスのイベント処理コードが多数の派生クラスによって共有され、特定のクラスのみが問題を呈しているため、実際の派生クラスの名前をデバッグ情報に含めることが重要です…


c++ - 派生クラスのオーバーライドされた関数が、基本クラスの他のオーバーロードを隠すのはなぜですか?

コードを考えてみましょう:#include<stdio.h> class Base{public: virtual void gogo(int a){ printf(" Base:: gogo(int) \n");}; virtual void gogo(int* a){ printf(" Base:: gogo(i…




継承 virtual オーバーライド 基底クラス 呼び出し コンストラクタ クラス override 派生クラス 仮想関数