私は約20分間プログラムをいじっていましたが、何らかの理由で初期化リストで継承された変数を使用できないことがわかりました。このプログラムの例:
class A {
protected:
int i;
};
class B : public A {
public:
B() : i(45) { }
};
int main() {
B b;
}
エラーが発生します
エラー:クラス「B」には「i」という名前のフィールドがありません</ p>
ただし、コンストラクターを次のように変更すると、次のようになります。
B() { i = 45; }
コンパイルします。
継承された変数を初期化できないことを私は知りませんでした。私の質問は、なぜですか?