• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:継承元の関数はオーバーロードできないのですか?)

継承元の関数はオーバーロードできないのですか?

このQ&Aのポイント
  • 継承元の関数はオーバーロードできないのでしょうか?コンパイルエラーが出る
  • 参考書にはそのような事例が書かれていないので、どなたか教えていただけないでしょうか
  • 継承元の関数の呼び出しでコンパイルエラーが発生する。オーバーロードはできない?

質問者が選んだベストアンサー

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

class CDog : public CAnimal{ public: using CAnimal::init; //追加 void init(void); }; としてみてください。 Effective C++ の50項によると継承元の関数を意図せず呼び出すことがないようにこのような仕様になっているらしい。 # 参考URLは検索して見つけた。 # Effective C++に書いてあるって言うから実際に見てみると確かにこの話題だった。

参考URL:
http://ml.tietew.jp/cppll/cppll/article/6092
jeddom
質問者

お礼

ご回答ありがとうございます。 なるほど、コンパイラの親切だったんですね。 usingを追加したらコンパイルできました。ありがとうございます。

その他の回答 (2)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.3

#1です。よくオーバーライドの説明で見るサンプルでしたので(動物とか犬とか)、勘違いしました。 よく読まずで申し訳ありませんでした。 オーバーロードについて、勉強になりました。 個人的には、ややこしそうなので、あんまり使わないかな…^^;

jeddom
質問者

お礼

いえいえ^^ わざわざありがとうございます

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

仮想関数、virtual、を調べてみて下さい。 例としては以下。 http://d.hatena.ne.jp/unageanu/20070916/1189933146

jeddom
質問者

お礼

さっそくのご回答ありがとうございます。 上のURLを見たのですが、オーバーライドについて書かれていて、オーバーロードについては書かれていないような気がするのですが・・・。

関連するQ&A