【发布时间】:2021-02-23 01:54:10
【问题描述】:
这是一个示例程序,演示了我在使用大型程序时遇到的问题。
基本上,我在.h 文件中有父类和子类的声明。因为父类A 是虚拟的,所以编译器假定子类B 也是虚拟的,不会让我在.cpp 文件中定义它的功能。错误说:
候选人是:virtual void B::print()
但我不希望它是虚拟的。
example.h 文件:
class A{
public:
int x;
A();
virtual void print();
};
class B : public A {
public:
void print(){};
};
example.cpp 文件:
#include "example.h"
#include <iostream>
using namespace std;
A::A(){ x = 10; }
B::print(){ cout << x << endl; }
main.cpp 文件:
#include "example.h"
using namespace std;
int main()
{
B b;
b.print();
return 0;
}
有什么办法可以解决这个问题,同时保留 3 个单独的文件?
【问题讨论】:
-
int x;是private。B看不到。 -
即使我删除花括号并将 x 公开,问题仍然存在。我应该编辑问题中的那些,因为我忽略了它们。
标签: c++ inheritance virtual-functions