STL の vector でクラスを変数とするクラスを新たに作りたいのですが、
うまくいかずに困っています。
class A {
public:
int x;
pubilc:
A() {};
~A() {};
};
とした場合、クラス A の vector を作るには、
void main()
{
std::vector<A> aVec;
for (int i = 0; i < 5; i++) {
A a;
a.x = i;
aVec.push_back(a);
}
for (i = 0; i < aVec.size(); i++) {
printf(%d\n, aVec[i]);
}
}
でよいように思うのですが、クラス A の定義しだいで
aVec[i] へのアクセスが、うまくいったりいかなかった
りして、出力が、
0
1
2
3
4
のときと
4
4
4
4
4
のときがあります。
やはりクラスのポインタを変数とするクラスを使って、
void main()
{
std::vector<A*> apVec;
for (int i = 0; i < 10; i++) {
A *ap = new A;
ap->x = i;
apVec.push_back(ap);
}
for (i = 0; i < aVec.size(); i++) {
printf(%d\n, aVec[i]);
}
}
すみません。操作間違いをしましたので、追記して、再投稿します。
STL の vector でクラスを変数とするクラスを新たに作りたいのですが、
うまくいかずに困っています。
class A {
public:
int x;
pubilc:
A() {};
~A() {};
};
とした場合、クラス A の vector を作るには、
void main()
{
std::vector<A> aVec;
for (int i = 0; i < 5; i++) {
A a;
a.x = i;
aVec.push_back(a);
}
for (i = 0; i < aVec.size(); i++) {
printf(%d\n, aVec[i].x);
}
}
でよいように思うのですが、クラス A の定義しだいで
aVec[i] へのアクセスが、うまくいったりいかなかった
りして、出力が、
0
1
2
3
4
のときと
4
4
4
4
4
のときがあります。
やはりクラスのポインタを変数とするクラスを使って、
void main()
{
std::vector<A*> apVec;
for (int i = 0; i < 10; i++) {
A *ap = new A;
ap->x = i;
apVec.push_back(ap);
}
for (i = 0; i < apVec.size(); i++) {
printf(%d\n, apVec[i]->x);
}
}
とすべきなのでしょうか。
後で、メモリを開放しなければならないので、できれば
クラスの実態を vector で扱いたいのですが。。。
よろしくお願いします。
> でよいように思うのですが、クラス A の定義しだいで
> aVec[i] へのアクセスが、うまくいったりいかなかった
> りして、
うまくいかない場合のコードを示してもらわないと、
なんとも言えません。
たしかVC6.0のコンパイラのバグだったと思います。
for内スコープはなんか変です。
A a;
for (int i = 0; i < 5; i++) {
a.x = i;
aVec.push_back(a);
}
こうすれば大丈夫です。