从多个不同的实现类调用接口函数c ++

时间:2018-04-05 04:38:17

标签: c++

您好我正在尝试用C ++实现一个接口。我希望能够从可以由各种不同类实现的类中调用函数。我尝试过的方法失败了,因为我无法使用指向接口的指针(抽象类)调用该函数。这是我尝试过的代码的基本要点:

接口类:

class InterfaceClass{
    virtual void handle() = 0;
};

致电课程:

CallingClass::CallingClass(InterfaceClass * owner){
    this->owner = owner;
}

void CallingClass::doStuff(){
    owner->handle();
}

实施课程:

class Class1 : public InterfaceClass {
    public:
      Class1();
      void handle();
}

class Class2 : public InterfaceClass {
    public:
      Class2();
      void handle();
}

实现类中的每个handle()函数都会打印出类名。每个实现类都包含一个CallingClass对象,该对象在一个单独的计时器线程中调用doStuff。我试图保留它,以便CallingClass不需要知道实现handle()函数的类的任何信息。

失败,因为我无法调用抽象类的函数。我期待这一点,但不能想办法解决它。任何建议将不胜感激!如果需要更多信息,请告诉我。

由于

1 个答案:

答案 0 :(得分:1)

您在Interface类中缺少public:keyword。 你需要记住C ++类默认是私有的,所以你应该在需要的地方添加public。

这是一个适合你的例子:

add_filter('woocommerce_cart_product_price', 'cart_price',10, 2);
function cart_price($product_price, $product ) {
  $terms = get_the_terms( $product->get_id(), 'product_cat' ); //get the product category.
  return $product_price; //do not forgot to return product price
}