【发布时间】:2016-01-17 07:55:33
【问题描述】:
我是 C++ 新手,目前正在学习继承。我不确定如何正确继承我的抽象类MapItem,我不断收到这些错误..
错误sn-p
hidden overloaded virtual function 'MapItem::tick' declared here:
different qualifiers (const vs none)
virtual void tick() const = 0;
Undefined symbols for architecture x86_64:
"Residential::Residential()"
它还声称我的类Residential 是一个抽象类。
只有当我将const 关键字添加到tick() 函数时,程序才能成功编译并运行。但是很明显,这是一个问题,因为tick() 需要对一些类成员变量进行操作。
我正确地包含了所有文件,并且我的 make 文件针对所有正确的文件,这使我无法理解这个错误。
map_item.h
// abstract class
class MapItem {
...
virtual void tick() const = 0;
}
住宅.h
#ifndef RESIDENTIAL_H
#define RESIDENTIAL_H
#include "map_item.h"
class Residential : public MapItem {
private:
int capacity;
double taxRevenue;
public:
Residential();
virtual ~Residential();
void tick();
double collectTaxes();
};
#endif
住宅.cpp
#include "residential.h"
Residential::Residential() {
capacity = 1;
taxRevenue = 0.0;
}
Residential::~Residential() {}
void Residential::tick() {
}
double Residential::collectTaxes() {
taxRevenue = 0.0;
return taxRevenue;
}
【问题讨论】:
标签: c++ inheritance virtual pure-virtual