小编Gle*_*ron的帖子

具有解除引用指针的多态性会产生意想不到的结果......为什么?

我遇到了一个C++难题,可以使用一些帮助!请考虑以下代码:

#include <iostream>

struct Node
{
    virtual void print() 
    {
        std::cout << "Node::print" << std::endl;
    }
};

struct Drawable : public Node
{
    virtual void print() 
    {
        std::cout << "Drawable::print" << std::endl;
    }
};

struct Visitor
{
    virtual void apply(Node& node)
    {
        std::cout << "apply(Node&)" << std::endl;
        node.print();
    }
    virtual void apply(Drawable& drawable) 
    {
        std::cout << "apply(Drawable&)" << std::endl;
        drawable.print();
    }
};

struct Renderer
{
    virtual void accept(Node* node, Visitor* visitor)
    {
        visitor->apply(*node);
    }
};

int main(int argc, char** argv) …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism visitor

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

标签 统计

c++ ×1

polymorphism ×1

visitor ×1