【发布时间】:2011-02-24 13:31:26
【问题描述】:
我已经实现了如下接口:
template <typename T>
class Variable
{
public:
Variable (T v) : m_value (v) {}
virtual void Callback () = 0;
private:
T m_value;
};
一个合适的派生类会这样定义:
class Derived : public Variable<int>
{
public:
Derived (int v) : Variable<int> (v) {}
void Callback () {}
};
但是,我想派生Callback 接受不同参数的类(例如:void Callback (int a, int b)).
有什么办法吗?
【问题讨论】:
-
你怎么称呼
Callback(在基类中)? -
不确定“在基类中调用
Callback”是什么意思。实际上,我不能拥有Variable实例,因为Callback是纯虚拟的。我误解了你的评论吗? -
重申 KennyTM 问题:如何从指向
Variable的引用/指针调用Callback?一个不同的问题(或者可能再次重新表述相同的问题)是如何将参数传递给最派生的对象? -
您希望派生类对同一个变量
或不同的变量 有不同的回调吗? -
@dribeas:回答你的第二个问题,参数是按值传递的。 @MadKeithV:两者都不是。我想在每个派生类中都有一个名为
Callback的方法,该方法具有 void 返回类型并接受不同的参数(相对于基类)。因此,例如我们可以有void DerivedA::Callback (int)和void DerivedB::Callback (char)。换句话说:我想强制执行该方法的返回类型及其名称。
标签: c++ interface virtual overloading