ループ内でオブジェクトポインタを作成する必要がありますが、一意のポインタを作成するのに苦労しています。これが私のコードです:
class DatClass{
public:
int m;
DatClass(int i):m(i){}
};
class OtherClass{
public:
DatClass* dc;
};
void Test(std::vector<OtherClass> v){
std::vector<OtherClass>::iterator it;
int i = 1;
for(it = v.begin(); it != v.end(); it++){
DatClass dc = DatClass(i);
std::cout << &dc << std::endl;
it->dc = &dc;
i++;
}
}
int main(){
std::vector<OtherClass> v;
v.push_back(OtherClass());
v.push_back(OtherClass());
v.push_back(OtherClass());
Test(v);
}
これは私にユニークなポインタを与えません。出力は次のようになります。
0xbf94d72c
0xbf94d72c
0xbf94d72c
一意のポインタを取得するには、newを使用する必要がありますか?もしそうなら、私は対応する削除をどこに置きますか?ありがとう!