【发布时间】:2021-03-13 22:39:38
【问题描述】:
我有一个默认类Barista,我希望它作为默认类,然后我派生了Baristas 的类型来配合它。
class Barista
{
public:
Barista();
virtual void getOrder();
virtual void intro(){cout << "";}
};
class JuniorBarista: public Barista
{
public:
JuniorBarista();
void getOrder() override;
void intro(){cout << "Hello my name is" << name_ << "What can I get you?" << endl;};
private:
string name_ = "Joe";
};
class SeniorBarista: public Barista
{
public:
SeniorBarista();
void getOrder() override;
void intro(){cout << "Hello my name is" << name_ << "What can I get you?" << endl;};
private:
string name_ = "jan";
};
class ManagerBarista: public Barista
{
public:
ManagerBarista();
void getOrder() override;
void intro(){cout << "Hello my name is" << name_ << "What can I get you?" << endl;};
private:
string name_ = "jon";
};
我正在尝试在main() 中调用JuniorBarista 的intro() 方法,但出现“未定义引用”错误。
我正在尝试这样调用我的函数:
Barista *b;
b = new Barista();
b = new JuniorBarista();
b->intro();
我不确定自己到底做错了什么,希望能解释一下为什么会出现此错误。
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Jaden\AppData\Local\Temp\ccUPD7MN.o:lab11p1.cpp:(.text+0x20): undefined reference to `Barista::Barista()'
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Jaden\AppData\Local\Temp\ccUPD7MN.o:lab11p1.cpp:(.text+0x39): undefined reference to `JuniorBarista::JuniorBarista()'
collect2.exe: error: ld returned 1 exit status
【问题讨论】:
-
在你的类中
Barista();声明了一个构造函数,但没有定义它。也许你只是想要Barista() {}?
标签: c++ derived-class