从内部类中的方法从包含类调用方法

时间:2018-09-21 12:41:53

标签: c++ oop nested inner-classes

我有两节课:

My_package(具有仅用于向硬件发送内容的方法)和类Automation_algorithm,它们执行处理my data的所有算法。

所以我想我应该做的是将类Automation_algorithm的实例作为我的类My_package的成员。

但是在某个时候,我从类Automation_algorithm执行一个方法,在此方法中,我检查是否满足某个条件,如果满足,我想使用类My_package来向我的系统发送加速命令。但是我该如何从“包含类”中调用方法accelerate()

为清楚起见,我有类似的东西

class My_package
{
public :
void accelerate(double a,double t);
...

private:
Automation_algorithm my_algorithm;
...
};

class Automation_algorithm
{
public:
void method1(); // I want to call accelerate(a,t) from here!!!
...
private:
...
};

感谢您的回复,并考虑到我不是c ++冠军。

1 个答案:

答案 0 :(得分:1)

使用网桥设计模式,这是一个片段:

class My_package
{
public:
    My_package();
    void accelerate(double a, double t);
    struct impl;  // declaring the implementation 
private:
    Automation_algorithm my_algorithm;  
    std::unique_ptr<impl> impl_; // implementation is defined here
};

struct My_package::impl {
    impl() {}
    void accelerate(double a, double t) {/* */} // implementation is defined here
};

My_package::My_package() : impl_( new impl() ) {}
void My_package::accelerate(double a, double t) { impl_->accelerate(a, t); }

class Automation_algorithm
{
public:
    Automation_algorithm();
    void method1(void)
    {
        double a,t;
        impl_->accelerate(a, t);
    }

private:
    std::unique_ptr<struct My_package::impl> impl_;
};

Automation_algorithm::Automation_algorithm() : impl_(new My_package::impl()) {}