设计从嵌套类

时间:2016-10-21 20:43:22

标签: c++ oop

基本上,我有以下结构:

class A { 
    const double x;
    class B { 
        void f() { /* need access to x */ }
    };
};

做正确的方法是什么?我考虑在A类中添加对B - 父级的引用,但之后我无法为B使用默认构造函数。
有没有更好的方法或设计?

2 个答案:

答案 0 :(得分:0)

一个选项

   class A {
    public:
    int x;
    class B {
        public:
        void foo(int x) {
            cout << x;
        }
    };
    B b;
    void foo() {
        b.foo(x);
    }
};

int main() {
    A temp;
    temp.x = 5;
    temp.foo();
    return 0;
}

答案 1 :(得分:0)

你可以在第一次尝试时离开并使用A的强制转换操作符,这样你就不再需要关心B的构造函数了:

struct A { 
    struct B {
        B(A &a): a{a} {}
        void f() { a.x; }
    private:
        A &a;
    };

    explicit operator B() {
        return B{*this};
    }

private:
    friend class B;
    const double x{0};
 };

 int main() {
     A a;
     A::B b = a;
 }

请注意,您必须确保a的生命周期超过b的生命周期。否则你迟早会在某个地方晃来晃去。

相关问题