【发布时间】:2019-01-03 20:40:36
【问题描述】:
我知道了:
class Core
{
protected:
static unsigned int id_seed;
unsigned int id;
std::string status;
public:
friend class CPU;
Core();
~Core();
virtual void procesare(std::string aplicatie) = 0;
};
class CoreScreen: public Core
{
public:
CoreScreen();
~CoreScreen();
void procesare(std::string aplicatie);
};
和 corescreen.cpp:
#include "CoreScreen.h"
CoreScreen::CoreScreen()
{
}
CoreScreen::~CoreScreen()
{
}
void CoreScreen::procesare(std::string aplicatie)
{
std::string buffer;
std::ifstream file_in(aplicatie);
if (file_in.is_open()) {
std::cout << "Aplicatia " << aplicatie << " ruleaza: " << std::endl;
while (getline(file_in, buffer)) {
std::cout << buffer;
}
file_in.close();
}
else {
throw new CExceptie(APP_FAIL, " Aplicatia nu a putut rula!");
}
}
当我在 main 中使用时:
CoreScreen CS1, CS2, CS3, CS4;
我收到此错误:“核心”无法实例化抽象类。
有什么问题?我以为我在 CoreScreen 中正确声明了我的虚函数。
【问题讨论】:
-
您已将其声明为纯虚拟。我很惊讶你竟然允许实现它。去掉声明中的
= 0。 -
@Gabriel Stoica - 你解决了这个问题吗?您发布的代码看起来不错,包括
void procesare()。我相信问题出在“其他地方”。问:您是否在任何地方直接使用“核心”?问:你能发布给出错误的确切行吗?
标签: c++ class abstract instantiation