C++ 纯抽象类中对方法的未定义引用
但是,只有在实现方法Apartment::calculChirie()时才会出现这些错误。那么,为什么calculChirie方法的实现会影响其他虚拟方法呢?我该怎么做才能修复它呢?无论你是否在任何地方调用函数,拥有任何没有实体的非纯虚拟方法都是“格式错误,不需要诊断”。编译器可以给出警告或错误,但不必这样做 也许这里发生的事情是,编译器在没有虚拟方法体的情况下没有费心生成vtable;但是,一旦您添加了一个,它就会尝试生成vtable,而无法找到其他方法的主体 正如评论中提到的,实现这些方法是一个很好的解决方案。无论您是否在任何地方调用函数,都“格式错误,不需要诊断”。编译器可以给出警告或错误,但不必这样做 也许这里发生的事情是,编译器在没有虚拟方法体的情况下没有费心生成vtable;但是,一旦您添加了一个,它就会尝试生成vtable,而无法找到其他方法的主体C++ 纯抽象类中对方法的未定义引用,c++,oop,C++,Oop,但是,只有在实现方法Apartment::calculChirie()时才会出现这些错误。那么,为什么calculChirie方法的实现会影响其他虚拟方法呢?我该怎么做才能修复它呢?无论你是否在任何地方调用函数,拥有任何没有实体的非纯虚拟方法都是“格式错误,不需要诊断”。编译器可以给出警告或错误,但不必这样做 也许这里发生的事情是,编译器在没有虚拟方法体的情况下没有费心生成vtable;但是,一旦您添加了一个,它就会尝试生成vtable,而无法找到其他方法的主体 正如评论中提到的,实现这些方法是
正如在评论中提到的,实现这些方法是一个很好的修复方法。
我应该怎么做才能修复它?
实现这些方法。@tkausl我不相信它有那么容易:))谢谢我应该怎么做才能修复它?
实现这些方法。@tkausl我不相信它有那么容易:))谢谢
#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <set>
class Locuinta {
protected:
std::string numeClient;
double pret;
int suprafata;
int discount;
public:
virtual double calculChirie() const = 0;
virtual void citire() = 0;
virtual void afisare() = 0;
};
class Apartament : public Locuinta {
int etaj;
public:
double calculChirie() const;
void citire();
void afisare();
};
double Apartament::calculChirie() const {
double chirie = 0;
chirie = suprafata * pret;
if (discount != 0) {
chirie *= (discount * 0.01);
}
return chirie;
}
undefined reference to `Apartament::citire()
undefined reference to Apartament::afisare()
error: ld returned 1 exit status