#include <iostream>
class A
{
public:
A(int n = 1) : i(n) {}
void Transform(int j)
{
// I want to create a new object and assign that object to "this"
A *obj = new A(j);
delete this;
this = obj;
}
private:
int i;
};
我可以在类A
的函数Transform()
中实例化类A
的新对象,并将新对象分配给this
,同时删除由{表示的旧对象{1}}?
答案 0 :(得分:2)
您无法分配给this
,但仍可以将this
表示的对象与在A::Transform()
中创建的本地对象交换:
#include <iostream>
class A
{
public:
A(int n = 1) : i(n) {}
void Transform(int j)
{
A obj(j); // create a new object A
std::swap(*this, obj);
}
private:
int i;
};
答案 1 :(得分:0)
答案 2 :(得分:0)
这不是有效的C ++代码,但是我认为有一种简单的方法可以实现您想要的:
#include <iostream>
class A
{
public:
A(int n = 1) : i(n) {}
void Transform(int j)
{
*this = A(j);
}
private:
int i;
};