- ベストアンサー
このコンパイルエラーの意味について教えていただけるとありがたいです
C++を勉強しだした大学生です。 唐突で大変恐れ入りますが、 次のエラー文の意味について、 検索しても、今一よく理解する記事に遭遇できず、 呆然としています。 これはどういった意味のエラー文でしょうか? お手数おかけしますが、 お力添えの程宜しくお願い致します。 error: cannot allocate an object of abstract type ‘dir1::fileA<dir2::dir3::fileB>’ 補足させていただきます。 ===================================================== ・「dir1」は「1」という名称のディレクトを指します。 ・「dir2」と「dir3」も「dir1」とは別にある他のディレクトリを指します。 ・「fileA」は「file.hpp」というファイル名です。 ・「fileB」も「fileB.hpp」というファイル名を指します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
名前空間の宣言が見えないし, 肝心なところだけきっちり消された印象があるのはなぜだ.... ちゃんと「csrpc::peer<kbr::chord::chord> は抽象クラスだからインスタンス化できない」って書いてある. しかも, このクラスがなぜ抽象クラスかというと 「onden::peer<kbr::chord::chord> が純粋仮想関数を持っている」 とまで書いてある. だから, csrpc::peer や onden::peer の定義を確認して, 必要なら onden::peer から継承しているであろう仮想関数を定義してやること. それが何かは書いてもらえないので知らない.
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
超能力者がそんなにいるとは思えないので, ・あなたの使っている処理系 (OS, コンパイラなど) の名称とバージョン ・関係するソースの部分 (特に名前が挙がっている型の宣言のところ) あたりを示してください.
補足
Tacosanさん 不足点が多く大変失礼しました。 いくつか補足させていただきました。 ページ下の方になってしまいますが ご参照いただけると大変ありがたいです。 宜しくお願い致します。
- asuncion
- ベストアンサー率33% (2127/6289)
エラーメッセージの意味がわかりさえすればよくて、 解決しなくてもいいのですか? 解決させたいのであれば、そのエラーメッセージを出した ソースコードを提示してください。
補足
asuncionさん 分かりにくくて大変恐縮でした。 いくつか補足させていただきましたので、 ご参照いただけるとありがたい次第です。
- Gab_km
- ベストアンサー率40% (20/50)
「ディレクトリを指す」や「ファイル名である」と言うのは、もう少し具体的にどういう意味でしょうか。 もしかして、ただの文字列だったりしますか? それとも、ファイル構造体などの意味なのでしょうか。 実際のコードの様子が分からないので的確なことは言えませんが、参考URLに挙げた内容が言っていることと近いのかもしれません。
お礼
Gab_kmさん! いただきました参考URLや御意見が とても役立ちました。 このたびは、 お忙しい中アドバイスいただきまして ありがとうございました!
補足
皆様分かりにくくて大変恐縮でした。 以下のとおりそのままのエラー文を持ってきましたので、 ご参照いただけるとありがたい次第です。 OS:fedora9 コンパイラ:gcc 「Gab_km」様が参考としてあげていただいたURLにある エラー文とほぼ同一です。 ../../sakura/include/sakura/detail/sakura_peer.hpp:730: error: cannot allocate an object of abstract type ‘csrpc::peer<kbr::chord::chord>’ ../../onden/include/onden/peer.hpp:129: note: since type ‘onden::peer<kbr::chord::chord>’ has pure virtual functions エラーメッセージを出したソースコードに関してですが、 あまりにも長いソースなので、エラーの出ていた 行番号周辺(sakura_peer.hpp:730/peer.hpp:129)を持ってきてみました。 #cat -n sakura_peer.hpp 721 private: 722 template<typename PEER_OB, typename PEER_HA, typename PEER_DI> 723 struct sakura_peer_impl { 724 typedef PEER_OB peer_ob; 725 typedef PEER_HA peer_ha; 726 typedef PEER_DI peer_di; 727 728 typedef boost::shared_ptr<peer_ob> peer_pointer; 729 730 sakura_peer_impl() : _peer(new typename traits::peer_ob()) { 731 CTL_TRACER("sakura"); 732 } 733 #cat -n peer.hpp 122 template<typename AIR> 123 class peer : 124 public abstruct_peer<typename AIR::proxy>, 125 public sakura::peer_base<peer<AIR>, 126 typename oden_traits<AIR, sakura::peer>::ha, 127 typename oden_traits<AIR, sakura::protocol>::ha, 128 typename oden_traits<AIR, sakura::nod>::ha> 129 { 130 public: 131 typedef AIR air; 132 typedef air object; 133 typedef typename air::proxy proxy; 134 135 typedef abstruct_peer<proxy> abstruct_peer_type; 136 137 typedef typename proxy::ha proxy_ha_type; 138 typedef oden::rpc_re<proxy_ha_type> rpc_re_type; 139 140 typedef typename sakura::peer_base<peer<AIR>, 141 typename oden_traits<AIR, sakura::peer>::ha, 142 typename oden_traits<AIR, sakura::protocol>::ha, 143 typename oden_traits<AIR, sakura::nod>::ha 144 > peer_base_type; 145 146 virtual typename oden_traits<AIR, sakura::peer>::ha get_ha() { 147 CTL_TRACER("oden"); 148 return typename oden_traits<AIR, sakura::peer>::ha(&peer::send_m, 149 &peer::recv_m, 150 &peer::get_proxy, 151 }
お礼
Tacosanさん! とてもよく、 エラーの内容を把握できました! とても助かりました! ありがとうございました!