您的位置:首页 > 编程语言 > C语言/C++

c++编译中出现‘vtable for ***未定义的引用解决办法

2015-09-20 01:16 405 查看
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";
}


华丽丽分割线-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: