c++ - 虚函数的继承

标签 c++ inheritance c++11 virtual-functions clang++

我有以下一段代码。

class A {
public: 
  virtual void foo() = 0;
}

class B : public A {
public:
  void bar() { /* Do something */ }
}

void B::A::foo() {
   bar();
   // Do something else
}

当我尝试编译它时...我收到一条错误消息,提示它找不到 bar()。这不是实例化纯虚函数的正确方法吗?

use of undeclared identifier 'bar'

最佳答案

void B::A::foo() 没有多大意义。看起来你的意思是在 B 中实现 foo(),为此你需要在 B 的类声明中声明它,然后实现它:

class B : public A {
public:
  void foo();
  void bar() { /* Do something */ }
};

void B::foo() {
   bar();
   // Do something else
}

关于c++ - 虚函数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667569/

相关文章:

Javascript 继承 - "this"关键字失去绑定(bind)?

Java Protobuf(版本 2.4.1)和 Protobuf-net(版本 r480)继承兼容性

c++ - 不同换行符的正则表达式

C++ 开关与成员函数指针与虚拟继承

c++ - 当我将元素类型存储在另一个字符串 vector 中时,如何打印一个 boost::any vector ?

c++ - vector::size() 如何在常数时间内返回 vector 的大小?

c++ - thrust::device_vector 使用 thrust::replace 或 thrust::transform 自定义仿函数/谓词

c++ - 如何在 C++ 中使用域名获取域 ip 地址?

c++ - 每个大型项目都包含一个 Lisp 解释器吗?

c++ - 昂贵的移动类型