私の問題を説明するために、以下のコードを書きました。私が11行目(キーワード "using"で)コメントした場合、コンパイラはファイルをコンパイルせず、このエラーを表示します:invalid conversion from 'char' to 'const char*'
。 Son
クラスのParent
クラスのメソッドvoid action(char)
が見えないようです。ベースクラスのメソッドにアクセスするのに "using"キーワードを使用するのはなぜですか?
なぜコンパイラはこのように動作しますか?または私は何か間違ったことをしましたか?
class Parent
{
public:
virtual void action(const char how){ this->action(&how); }
virtual void action(const char * how) = 0;
};
class Son : public Parent
{
public:
using Parent::action; // Why should i write this line?
void action(const char * how){ printf("Action: %c\n", *how); }
};
int main(int argc, char** argv)
{
Son s = Son();
s.action('a');
return 0;
}
私に教えてください: "const char how"でconstを削除するとどうなりますか? –
'Son S = Son();'と入力する必要はありません。それはちょうど一時的なものを作成し、次にコピーコンストラクタを呼び出します。単に「Son s;」と入力してください。 –
この質問はたくさんあります。[http://stackoverflow.com/questions/1835988](http://stackoverflow.com/questions/1835988)[http://stackoverflow.com/質問/ 411103](http://stackoverflow.com/questions/411103)[http://stackoverflow.com/questions/1480085](http://stackoverflow.com/questions/1480085)[http:// stackoverflow。 com/questions/1799497](http://stackoverflow.com/questions/1799497)[http://stackoverflow.com/questions/888235](http://stackoverflow.com/questions/888235)[http:// –