所以我过去几周一直在努力学习C ++。在C ++编码时,我倾向于用Java逻辑思考。
所以在java中说我有这个代码:
public class Entity {
public Entity(){
Foobar foobar = new Foobar(this);
}
public void randomMethod(){
System.out.println("I am an entity");
}
}
public class Foobar{
public Foobar(Entity e){
e.randomMethod();
}
}
当我创建Foobar的实例时,我想将它实例化的实体类传递给Foobar构造函数。我很难在C ++中实现相同的代码。
修改的 基本上,我希望在另一个类中实例化的对象知道它的容器类。
答案 0 :(得分:1)
这是问题中的Java代码的C ++版本。希望这会有所帮助。
class Entity {
public:
Entity();
void randomMethod();
};
class Foobar : public Entity {
public:
Foobar(Entity *e);
};
Foobar::Foobar(Entity *e) {
e->randomMethod();
}
Entity::Entity() {
Foobar *foobar = new Foobar(this);
}
void Entity::randomMethod() {
std::cout << "I am an entity";
}
答案 1 :(得分:0)
与Java(它不可见)不同,在C ++中你必须自己指出pointers
。
如果要引用现有对象,则必须在调用方法时添加&
,并且必须使用*
指定参数以指示它是指针。
public: Foobar(Entity* e)
{ // logic here
}
public: Entity() {
Foobar foobar = new Foobar(this);
}