以下のコードで致命的なリンクエラーが発生しています。
]+0x10)||undefined reference to `base<node>::pass_derived(node)'|
とbase
呼ばれるポインタを持ち、poly_type
そのbase
クラスがそれ自体の内部からと呼ばれる別のクラスに「アクセス」できるクラスを定義したかったのderived
です。私が遭遇した問題はpoly_type->pass_derived(n);
、型のオブジェクトを渡そうとした派生クラスをコンパイラが見たくないという行node
です。これはC ++の制限だと思います。もしそうなら、私に知らせてください。壊れたコードは次のとおりです。
編集はこれがどこかで尋ねられたようです、私はその意見を反映するためにソースを更新しました。
基本クラスにはpass_派生の定義はありません。仮想関数として宣言しますが、派生クラスでのみ定義します。main関数でbaseをインスタンス化するため、コンパイラはbaseのコードを生成しようとしますが、pass_派生の定義が見つかりません。
空の場合でも、デフォルトの実装を追加できます。
最終的に派生:: pass_deriveを呼び出すことができるかどうかについては... :)頑張ってください、それは楽しそうです。独自のバージョンの継承を構築していますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加