class Brass:public AcctABC
{<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
private:
public:
Brass(const std::string & s="Nullbody",long an=-1,
double bal=0.0):AcctABC(s,an,bal){}
virtual void Withdraw(double amt);
virtual void ViewAcct()const;
virtual ~Brass(){}
};
出现错误/tmp/ccytx9fA.o:在函数‘Brass::Brass(std::string const&, long, double)’中:
usebrass3.cpp:(.text._ZN5BrassC2ERKSsld[_ZN5BrassC5ERKSsld]+0x37):对‘vtable for Brass’未定义的引用
collect2: error: ld returned 1 exit status
关键字‘vtable for(虚函数)
解决办法查找相关虚函数时候已经写好功能函数。拿上面例子来说也就是说查找
virtual void Withdraw(double amt);
virtual void ViewAcct()const;
这两个函数是否已经申明。楼主找完以后发现是
virtual void Withdraw(double amt);
这个函数没写补充结束问题得以解决
void Brass::Withdraw(double amt)
{
if(amt<0)
cout<<"Withdrawal amount must be positive;"
<<"withdrawal canceld.\n";
else if(amt<=Balance())
AcctABC::Withdraw(amt);
else
cout<<"Withdrawal amount of $:"<<amt<<" exceeds your balance.\n"
<<"Withdrawal canceled.\n";
}
华丽丽分割线-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------