まあまあ、クラスで新しく、2つのクラスを持つ単純なプログラムを作成しようとしています。クラスAとクラスBです。私は、クラスAのコンストラクタで変数を初期化しようとしていますし、何らかのアクションを行い、クラスBに渡します。したがって、クラスAは基本クラスです。 ?だから私は2つの質問1)なぜコンストラクタ()が最初に呼び出さ冊のコンストラクタに応じて変数を宣言しないを持っているクラスAとクラスBのC++のコンストラクタと別のクラスに変数を渡す
error: ‘i’ was not declared in this scope
- 私はプログラムをコンパイルするときしかし、私は2つの間違いを得ましたか2)クラスAからクラスBへの変数の転送方法は何ですか?
#include <iostream>
#include <cstdio>
using namespace std;
class A {
public:
A(){
int i =1;
}
~A(){}
int foo() {
int p = i+1;
i++;
return p;
}
};
class B : public A {
public:
int showme() {
return i;
}
};
int main() {
A j;
B k;
cout<< k.showme()<<endl;
cout<< j.foo()<<endl;
return 0;
}
だから私はコンストラクタで何を宣言する必要がありますか?私はコンストラクタが変数を宣言すると思った? –
私は間違っているかもしれませんが、これもまた指摘するのに役立つかもしれません。このコードでは、クラスAの変数とクラスBの別の変数を宣言します。あなたがAのメンバ変数として 'int i;'を追加すると、これは整数j.iと異なる整数k.iが存在することを意味します。私はメンバーA :: iのこれをかなり移譲してはいけません。 –