C++ C++;关键词使用

C++ C++;关键词使用,c++,C++,可能重复: 嗨 在以下情况下,我无法找到为什么需要使用关键字: // Pure virtual class. class Visitor { public: void operator()(Ast&); virtual void operator()(Node&) = 0; }; // Define the default visit methods. class DefaultVisitor : public Visitor { publi

可能重复:

在以下情况下,我无法找到为什么需要使用关键字

// Pure virtual class.
class Visitor
{
  public:
      void operator()(Ast&);

      virtual void operator()(Node&) = 0;
};

// Define the default visit methods.
class DefaultVisitor : public Visitor
{
  public:
    using Visitor::operator();      // First 'using' needed.

    virtual void operator()(Node&);
};

// A visitor using DefaultVisitor's behaviour.
class AVisitor : public DefaultVisitor
{
  public:
    using Visitor::operator();      // Second 'using' needed.

    virtual void operator()(Node&);
};
如果没有使用
语句的两个
,则在
Visitor
void operator()(Ast&)中声明和定义了public非虚方法,从
AVisitor
调用时不可见。例如:

AVisitor v;
Ast* ast = new Node(); // Node is-a Ast
v(*ast); // should call Visitor::operator()(Ast&);
不会编译,表示方法
void operator()(Ast&)
与AVisitor中的任何内容都不匹配。唯一的解决方案是使用
using
关键字导入基类的抽象方法。但是为什么呢?因为它是公开的,我不明白为什么需要这样做

谢谢。

看到这个了吗

使用

using关键字用于导入 命名空间(或命名空间的一部分) 进入当前范围。示例代码: 例如,下面的代码 将整个std命名空间导入到 当前范围,以便在 该名称空间可以在没有 在“std::”之前

使用名称空间std

或者,下一个代码段 只导入 将std命名空间转换为当前 名称空间:

使用std::cout

相关主题:名称空间

Using用于名称空间规范/使用-我认为您并不是在尝试使用它。

看到这个了吗

使用

using关键字用于导入 命名空间(或命名空间的一部分) 进入当前范围。示例代码: 例如,下面的代码 将整个std命名空间导入到 当前范围,以便在 该名称空间可以在没有 在“std::”之前

使用名称空间std

或者,下一个代码段 只导入 将std命名空间转换为当前 名称空间:

使用std::cout

相关主题:名称空间


使用是为了名称空间规范/使用-我认为您并不是在尝试使用它。

最好将其作为注释,并以重复的形式关闭,imho.Ok。很简单。我一直认为编译器在使用每个可用方法的参数。谢谢你,很抱歉重复,使用是如此普遍,很难找到真正相关的关键字。最好留下评论,并关闭作为重复,imho.Ok。很简单。我一直认为编译器在使用每个可用方法的参数。谢谢你,很抱歉重复,使用是如此普遍,它是很难找到真正相关的关键字。