我有两节课:
类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 ++冠军。
答案 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()) {}