[解決済み] 初期化リストで親のprotectedメンバを初期化する(C++)
2022-05-11 17:52:37
質問
子クラスのコンストラクタの初期化リストを使用して、親クラスでprotectedと宣言されたデータメンバを初期化することは可能でしょうか。 うまくいきません。 私はそれを回避することができますが、私は私がする必要がない場合は素晴らしいことです。
いくつかのサンプルコードです。
class Parent
{
protected:
std::string something;
};
class Child : public Parent
{
private:
Child() : something("Hello, World!")
{
}
};
これを試すと、コンパイラは私に次のように伝えます: "クラス 'Child' は 'something'" という名前のフィールドを持ちません。 このようなことは可能ですか? もしそうなら、構文は何ですか?
多くのありがとう!
どのように解決するのですか?
おっしゃるような方法では無理です。ベースクラスにコンストラクタ(protectedでも可)を追加して、それを転送する必要があります。次のようなものです。
class Parent
{
protected:
Parent( const std::string& something ) : something( something )
{}
std::string something;
}
class Child : public Parent
{
private:
Child() : Parent("Hello, World!")
{
}
}
関連
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】Enterキーを押して続行する
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] C++で静的プライベートメンバを初期化する方法は?
-
[解決済み】静的定数文字列(クラスメンバ)
-
[解決済み] C++の静的コンストラクタ?プライベートな静的オブジェクトを初期化する必要があります
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】変数やフィールドがvoid宣言されている