Вызов метода из содержащего класса из метода во внутреннем классе - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть два класса:

класс 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 голосов
/ 21 сентября 2018

Используя шаблон проектирования моста, вот фрагмент:

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()) {}
...