I had an issue for virtual inheritance, it's a sample code for virtual inheritance.
I got the issue as below
warning: 'Sofabed' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit
Bed and Sofa also got same warning.
How could I fixed this issue?
Run this sample code on
- Mac OS 10.14.6
 - Qt Creator 4.11.1
 - Based on Qt 5.14.1 (Clang 10.0 (Apple), 64 bit)
 
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
class Furniture { //common base class
protected: int weight;
public: 
    void SetWeight(int a=0) { weight=a; }
    int GetWeight() { return weight; }
    void ShowWeight() { 
        cout << "weight=" << weight << endl;
    } 
};
class Sofa : virtual public Furniture {
public: 
    void sit() { cout << "sit!" << endl; }
    //void ShowWeight() { 
    //    cout << “Sofa weight=” << weight; } 
};
class Bed : virtual public Furniture {
public: 
    void lie() { cout << "lie!" << endl; }
    //void ShowWeight() { 
    //    cout << “Bed weight=” << weight; } 
};
class Sofabed : public Sofa, public Bed {
public: 
    void fold() { cout << "fold!" << endl; }
};
int main() 
{
    Sofabed obj;
    obj.sit();
    obj.lie();
    obj.fold();
    obj.SetWeight(100);
    obj.ShowWeight();
    return 0;   
}
Aucun commentaire:
Enregistrer un commentaire