【问题标题】:undefined reference in derived class [duplicate]派生类中未定义的引用[重复]
【发布时间】:2020-06-23 02:07:15
【问题描述】:

您好,我正在为学校做一个项目,终端中的编译器似乎给了我错误“未定义对我的班级的引用”。它与ctors和默认ctors有关吗?对于如何解决这个问题,有任何的建议吗?谢谢!

#include <iostream>
using namespace std;

class Sports{

public:
    Sports();
    Sports(int players, int medals = 0){
        m_players = players;
        m_medals = medals;
    }

    int getPlayers(){return m_players;}
    bool getMedals(){return m_medals;}

friend bool compare(const Sports & lhs, const Sports & rhs){
    return(lhs.m_players == lhs.m_players && rhs.m_medals == rhs.m_medals);
}

protected: 
    int m_players;
//private: 
    int m_medals;
};

class Tennis : public Sports{

public: 
    Tennis(bool experience){
        m_experience = experience;
    }
    void RemovePlayers(){m_players--;}
    void AddMedals(){m_medals++;}
private:
    bool m_experience;

};

int main(){

Tennis t1;


return 0;
}

【问题讨论】:

  • 您的问题存在一些问题:首先,说明问题的minimal reproducible example 是什么。减少你的代码,直到你有相同的、意外错误的最低限度。其次,你得到的实际错误是什么?您应该引用整个错误消息,另请参阅How to Ask。作为新用户,还要确保您使用tour
  • 想必你需要实现Sports的默认构造函数

标签: c++ function class pass-by-reference derived-class


【解决方案1】:

Tennis 的唯一构造函数采用 bool。但是您尝试构造一个名为 t1Tennis 而不将 bool 传递给构造函数。

另外,你说Sports 有一个不带参数的构造函数。但是没有。

您可以通过添加Sports 的构造函数的代码并将bool 传递给Tennis 的构造函数来修复它,如下所示:

Sports::Sports() : m_players(0), m_medals(0) { ; } 

int main()
{
    Tennis t1 (false);
    return 0;
}

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 2019-11-02
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    相关资源
    最近更新 更多