gpt4 book ai didi

c++ - C++ 中不允许抽象类型 "NumericQuestion"的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:20 26 4
gpt4 key购买 nike

此外,这段代码究竟做了什么?

const int MAX_QUESTIONS = 100;
Question* questions[MAX_QUESTIONS];
questions[numQuestions++] = createQuestion("How many degrees are there in a full circle?", 360);

Question* createQuestion(const char question[], const double answer)
{
NumericQuestion* nq = new NumericQuestion(question, answer);
return nq;
}

非常感谢。我真的需要你的帮助向我解释

编辑:这是问题的声明

class Question
{
char *q;
protected:
void writeQuestion(ostream& ostr) const;
public:
Question(const char question[])
{
int n = strlen(question);
q = new char[n];
strcpy(q, question);
cout << q;
}
void askQuestion() const;
virtual void getAnswer();
virtual bool isCorrect() const=0;
};

编辑:NumericQuestion 的声明

class NumericQuestion : public Question
{
double ans, geta;
public:
NumericQuestion(const char question[], const double answer): Question(question)
{
ans = answer;
getAnswer();
}

void getAnswer()
{
cout << "Answer: ";
cin >> geta;
isCorrect();
}
bool isCorrect()
{
return ((geta==ans)? true : false);
}
};

Stackoverflow 不允许我发布那么多代码

最佳答案

您需要在 NumericQuestion 中将 isCorrect() 声明为 const:

bool isCorrect() const  // <--- add const keyword here

原因是因为 const 是方法签名的一部分,就像它的名称和参数一样。 isCorrect() const 是一种不同于名为 isCorrect() 的非 const 函数的方法。

当您看到 =0 的虚拟方法时,这意味着该方法是“纯虚拟”的。基类通常不指定实现,但在实例化任何派生类之前,必须定义实现。

关于c++ - C++ 中不允许抽象类型 "NumericQuestion"的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com