public inheritanceのエラー
下記のコードを考えたとき、hogeを継承したhoge2からhogeのpublic member functionを呼び出せるはずですが、hoge2でhoge_function()を定義して、hoge_function(bool)を呼び出そうとするとvisual studioではC2660、clangではtoo many argumentsのエラーが出てしまいます。
なぜこのような挙動をするのでしょうか?
参考ですが、hoge2のhoge_function(bool)を削除すれば、エラーがなくなります。
追記:
コメントを参考に以下のように質問のコードを修正しました。
#include<iostream>
#include<memory>
class hoge
{
public:
virtual void hoge_function()
{
std::cout << "hoge" << std::endl;
}
//virtual void hoge_function(bool hoge = true)
virtual void hoge_function(bool hoge)
{
std::cout << "hogehoge" << std::endl;
}
};
class hoge2 : public hoge
{
public:
//virtual void hoge_function()
virtual void hoge_function(bool hoge)
{
std::cout << "hoge2" << std::endl;
}
};
int main()
{
std::shared_ptr<hoge2> hogehoge = std::make_shared<hoge2>();
// this line returns an error
hogehoge->hoge_function(true);
return 0;
}