私は初心者でC++を学ぼうとしています。私は次の問題を解決しようとしています。私は何が問題を引き起こしているのか分かりません。この抽象クラスからサブクラスを作成するにはどうすればよいですか? Vtable Error
これは私がして提供しています抽象クラスです:
#ifndef __EXPR_H__
#define __EXPR_H__
#include <string>
class Expr {
public:
virtual int eval() const = 0;
virtual std::string prettyPrint() const = 0;
virtual ~Expr();
};
#endif
私はこのクラスのサブクラスを作成しようとしています、私の.hファイルは、私の実装が、これ
#ifndef __NUM_H__
#define __NUM_H__
#include <iostream>
#include "expr.h"
//class of lone expression
class Num:public Expr
{
private:
int operand;
public:
Num(int operand):operand(operand){}
int eval() const;
std::string prettyPrint() const;
~Num(){}
};
#endif
のように見えますNumクラスはこのように見えます
#include "num.h"
#include <sstream>
std::string Num::prettyPrint()
{
std::stringstream convert;
convert << operand;
return convert.str();
}
int Num::eval()
{
return operand;
}
次のエラーが発生します。何が原因なのか分かりません。
Undefined symbols for architecture x86_64:
"vtable for Num", referenced from:
Num::Num(int) in rpn-dc20fb.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for Expr", referenced from:
Expr::Expr() in rpn-dc20fb.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
助けていただければ幸いです。ありがとう!