gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:32:44 24 4
gpt4 key购买 nike

我有两个类:

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++ 冠军。

最佳答案

使用桥接设计模式,这里有一个片段:

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

关于c++ - 从内部类中的方法调用包含类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com