this質問で見つかったことによると、参照配列は不正です。私はちょっと新しいC++を指していて、ポインタとデリファレンスを使って遊んでいました。次のコードはうまく実行されているようです。逆参照ポインターを持つC++充填配列
#include <iostream>
#include <cstdlib>
using namespace std;
struct A
{
int data1;
int data2;
A (void) : data1(0), data2(0) {}
// many more datas
};
int main()
{
cout << "test start" << endl;
A *a = new A();
A arr[100];
for (int x=0; x<100; x++) arr[x] = *a;
cout << "test done" << endl;
}
ここで何が起こるのですか? array
のすべての場所にa
オブジェクトがコピーされていますか?もしそうなら、のような関数からオブジェクト参照を返すとき:これはあなたの最初の質問については
A function (void) {return A();}
「i」が定義されていないため、コンパイルエラーが発生します。 –
申し訳ありませんが、私は質問をする際に 'i'を変更しました。両方とも' a'固定になっています – shishkebab
'arr [x] = * a;'は、クラスの暗黙的に宣言されたコピー代入演算子を呼び出して各メンバーをコピーします。 – Unimportant