小编Now*_*kus的帖子

C++方法调用和类型范围解析模糊

我希望这个标题能够真正描述我想要问的内容......

我编写了一段代码,用gcc编译并按照我的意图工作.但是,它不使用llvm编译,并且在使用icc编译时代码执行方式不同!
以下是问题的示例:

#include <iostream>

using std::cout; using std::endl;

class A {
public:
  virtual void foo() { cout << "A::foo()" << endl; }
};

class B : public A {
public:
  typedef A  base;
  virtual void foo() { cout << "B::foo()" << endl; }
};

int main() {
  typedef B  base;
  base* bp = new B();
  bp->base::foo(); 
}
Run Code Online (Sandbox Code Playgroud)

gcc输出:A :: foo()
icc输出:B :: foo()

有人可以解释标准对这个案子的看法吗?

c++ types scope ambiguity method-call

18
推荐指数
2
解决办法
692
查看次数

标签 统计

ambiguity ×1

c++ ×1

method-call ×1

scope ×1

types ×1