是否可以从C ++中在此类中定义的struct内部调用类方法?

时间:2015-04-16 10:55:21

标签: c++ class struct

我有一个父类,子类,在这个子类中我定义了一些结构。在这个结构中,我想调用父方法。有可能吗?

class Parent
{
public:
    int foo(int x);
}

class Child : public Parent
{
public:
    struct ChildStruct {
        int x;

        int bar(int y) {
            return GET_CLASS_CHILD->foo(this->x + y);
        }
    };
}

在C ++中这样的事情是可能的吗?那怎么实现呢?

1 个答案:

答案 0 :(得分:5)

您必须向ChildStruct传递一个引用或指向所有者类实例的指针:

class Child : public Parent
{
public:
    struct ChildStruct {
        int x;
        Child& owner;

        ChildStruct(Child& owner_) : owner(owner_) {}

        int bar(int y) {
            return owner.foo(this->x + y);
        }
    };
};

那就是说,看起来你真正需要的是lambda function