- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:継承元の関数はオーバーロードできないのですか?)
継承元の関数はオーバーロードできないのですか?
このQ&Aのポイント
- 継承元の関数はオーバーロードできないのでしょうか?コンパイルエラーが出る
- 参考書にはそのような事例が書かれていないので、どなたか教えていただけないでしょうか
- 継承元の関数の呼び出しでコンパイルエラーが発生する。オーバーロードはできない?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
class CDog : public CAnimal{ public: using CAnimal::init; //追加 void init(void); }; としてみてください。 Effective C++ の50項によると継承元の関数を意図せず呼び出すことがないようにこのような仕様になっているらしい。 # 参考URLは検索して見つけた。 # Effective C++に書いてあるって言うから実際に見てみると確かにこの話題だった。
その他の回答 (2)
- hidebun
- ベストアンサー率50% (92/181)
回答No.3
#1です。よくオーバーライドの説明で見るサンプルでしたので(動物とか犬とか)、勘違いしました。 よく読まずで申し訳ありませんでした。 オーバーロードについて、勉強になりました。 個人的には、ややこしそうなので、あんまり使わないかな…^^;
質問者
お礼
いえいえ^^ わざわざありがとうございます
- hidebun
- ベストアンサー率50% (92/181)
回答No.1
仮想関数、virtual、を調べてみて下さい。 例としては以下。 http://d.hatena.ne.jp/unageanu/20070916/1189933146
質問者
お礼
さっそくのご回答ありがとうございます。 上のURLを見たのですが、オーバーライドについて書かれていて、オーバーロードについては書かれていないような気がするのですが・・・。
お礼
ご回答ありがとうございます。 なるほど、コンパイラの親切だったんですね。 usingを追加したらコンパイルできました。ありがとうございます。