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。很简单。我一直认为编译器在使用每个可用方法的参数。谢谢你,很抱歉重复,使用是如此普遍,它是很难找到真正相关的关键字。