派生クラスへのポインターのプログラムを作成しています。コードは次のとおりです。
#include <iostream>
using namespace std;
class base {
int i;
public:
void set_i(int num) { i=num; }
int get_i() { return i; }
};
class derived: public base {
int j;
public:
void set_j(int num) {j=num;}
int get_j() {return j;}
};
int main()
{
base *bp;
derived d[2];
bp = d;
d[0].set_i(1);
d[1].set_i(2);
cout << bp->get_i() << " ";
bp++;
cout << bp->get_i();
return 0;
}
プログラムは 1 つの正しい値とその他の不要な値を表示しています。
bp++;
クラスの派生型ではなく、クラスの基本型の次のオブジェクトを指すようにポインターをインクリメントしています。
書くことで答えを正しく表示できます
> bp =& d[0];
bp1=&d[1];
d[0].set_i(1);
d[1].set_i(2);
ただし、2 つのポインターを割り当てる必要があります。同様に、100 個の値を取得する必要がある場合は、100 個のポインターを割り当てる必要があります。これは良くありません。
私の質問は、配列の値を単一のポインターで表示できるかということです。