您好我正在尝试用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()
函数的类的任何信息。
失败,因为我无法调用抽象类的函数。我期待这一点,但不能想办法解决它。任何建议将不胜感激!如果需要更多信息,请告诉我。
由于
答案 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
}