C++中的绝对难题!!!哪位高手可以解决这个问题呢?

#include<iostream>#include<string>usingnamespacestd;classFish{public:virtualFish*Clon... #include<iostream>
#include<string>
using namespace std;
class Fish
{
public:
virtual Fish* Clone()=0;
virtual void Swim();
};
class Tuna:public Fish
{
public:
Fish* Clone()
{
return new Tuna(*this);
}
void Swim()
{
cout<<"Tuna swims fast in the sea"<<endl;
}
};
class Carp:public Fish
{
Fish* Clone()
{
return new Carp(*this);
}
void Swim()
{
cout<<"Carp swims slow in the lake"<<endl;
}
};
int main()
{
const int ARRAY_AIZE=4;
Fish* myFishes[ARRAY_AIZE]={NULL};
myFishes[0]=new Tuna();
myFishes[1]=new Carp();
myFishes[2]=new Tuna();
myFishes[3]=new Carp();
Fish* myNewFishes[ARRAY_AIZE];
for(int Index=0;Index<ARRAY_AIZE;++Index)
myNewFishes[Index]=myFishes[Index]->Clone();
for(int Inde=0;Inde<ARRAY_AIZE;++Inde)
myNewFishes[Inde]->Swim();
for(int Ind=0;Ind<ARRAY_AIZE;++Ind)
{
delete myFishes[Ind];
delete myNewFishes[Ind];
}

return 0;
}

以上这个函数是可以通过编译的。但是一点击运行就报错了!unresolved external symbol "public: virtual void __thiscall Fish::Swim(void)" (?Swim@Fish@@UAEXXZ
fatal error LNK1120: 1 unresolved externals
求C++专家级的人士来解答!
感激不敬啊!
展开
 我来答
亚迅阿贝尔
2014-10-22
知道答主
回答量:31
采纳率:0%
帮助的人:9万
展开全部
将virtual void Swim()改成virtual void Swim()=0;,虚函数需要在基类中进行定义,而上述函数没有在基类进行定义,而是在子类中实现了,所以它也是纯虚函数,不能是虚函数。纯虚函数不能在基类中定义,她只是一个接口,要到子类中去实现。
匿名用户
2014-10-22
展开全部
把你的第8行代码改成virtual void Swim()=0;即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Xdynix
2014-10-22 · TA获得超过116个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:198万
展开全部
Fish::Swim(),要么定义了,要么设成纯虚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式