小编Ben*_*Ben的帖子

重载方法实现接口的特例

免责声明:我无法清楚地描述我想要做的事情,所以我希望这个例子比我的解释更清楚!请建议任何重新措辞,以使其更清楚.:)


是否可以覆盖具有比接口所需的更具体版本的函数,以便将该接口中方法的参数的子类分别处理到通用情况?(下面的例子和更好的解释......)如果不能直接完成,是否有一些模式可以用来达到类似的效果?

#include <iostream>

class BaseNode {};
class DerivedNode : public BaseNode {};

class NodeProcessingInterface
{
public:
    virtual void processNode(BaseNode* node) = 0;
};

class MyNodeProcessor : public NodeProcessingInterface
{
public:
    virtual void processNode(BaseNode* node)
    {
        std::cout << "Processing a node." << std::endl;
    }

    virtual void processNode(DerivedNode* node)
    {
        std::cout << "Special processing for a DerivedNode." << std::endl;
    }
};

int main()
{
    BaseNode* bn = new BaseNode();
    DerivedNode* dn = new DerivedNode();

    NodeProcessingInterface* processor = new MyNodeProcessor();
    // …
Run Code Online (Sandbox Code Playgroud)

c++ oop

9
推荐指数
1
解决办法
1150
查看次数

标签 统计

c++ ×1

oop ×1