0
にアクセスする方法は、私がやりたいものです。オーバー機能 - ここでは、親機能
class Msg {
int target;
public:
Msg(int target): target(target) { }
virtual ~Msg() { }
virtual MsgType GetType()=0;
};
inline std::ostream& operator <<(std::ostream& ss,Msg const& in) {
return ss << "Target " << in.target;
}
class Greeting : public Msg {
std::string text;
public:
Greeting(int target,std::string const& text) : Msg(target),text(text);
MsgType GetType() { return TypeGreeting; }
};
inline std::ostream& operator <<(std::ostream& ss,Greeting const& in) {
return ss << (Msg)in << " Text " << in.text;
}
残念ながら、これは、第二の最後の行が失敗した上でメッセージへのキャストとして動作しません。 Msgは抽象的です。しかし私は、親の情報を1つの場所に出力するコードを持っていたいと思います。これを行う正しい方法は何ですか?ありがとう!
編集:申し訳ありませんが、これはこの行です。return ss << (Msg)in << " Text " << in.text;
書く方法はわかりません。
これはconstの正しさに違反します。 –
'(Msg)in'の代わりに' static_cast(in) 'と書いてください。 –
"in.text"?とにかくコンパイルエラーを出すドット表記を使ってプライベートメンバーにアクセスしています。アクセシビリティプライベートメンバーは、ゲッターとセッターの機能によってのみ実行できます。 – Arunmu