作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
此外,这段代码究竟做了什么?
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/
此外,这段代码究竟做了什么? const int MAX_QUESTIONS = 100; Question* questions[MAX_QUESTIONS]; questions[numQuest
我是一名优秀的程序员,十分优秀!