tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
548
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    marcelz marcelz ist offline Mitglied
    Registriert seit
    Jun 2005
    Beiträge
    15
    Hallo Ihr lieben,

    ich habe eine kleine Frage zu dem unten angegeben c++ code.

    Wenn ich in der Klasse X den Standard Konstruktor entferne, bekomme ich nen Fehler vom Compiler. Jedoch möchte ich gar nicht, dass dieser aufgerufen wird bei der Vererbung, sondern der X(int a) Konstruktor und das müsste doch folgendes bewirken oder?

    Y1( int a):X(a)

    Für C++ nutze ich VS98 C++

    Gruß

    Marcel
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
     
    #include <iostream>
    using namespace std;
     
    class X
    {
    public:
     
        int a;
        X()
        {
            
        }
     
        X(int a)
        {
            cout << "X"<< endl;
        }
        virtual ~X(){}
        
    };
     
    class Y1 : public virtual X
    {
    public:
        Y1( int a):X(a)
        {
            cout << "Y1"<< endl;
        }
        virtual ~Y1(){}
    };
     
    class Y2 : public virtual X
    {
    public:
        Y2( int a):X(a)
        {
            cout << "Y2"<< endl;
        }
        virtual ~Y2(){}
    };
     
    class Z : public Y1,public Y2 
    {
    public:
        Z( int a,  int b):Y1(a),Y2(b)
        {
        }
        
    };
     
    int main()
    {
        Z * z = new Z(1,2);
        cin.get();
        return 0;
    }
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo, hast du dir mal die Fehlerbeschreibung zum Compiler-Fehler C2512 durchgelesen? Dort steht u.a. Folgendes:

    "If you provide a constructor that takes a nonvoid parameter, you must also provide a default constructor. The default constructor can be a constructor with default values for all parameters."

    Du könntest das Problem, daher lösen, wenn du die Klasse X so implementierst:
    Code :
    1
    2
    3
    4
    5
    6
    
    class X
    {
    public:
        X(int a = 0) { cout << "X"<< endl; }
        virtual ~X(){}
    };
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    marcelz marcelz ist offline Mitglied
    Registriert seit
    Jun 2005
    Beiträge
    15
    oh danke dir,...

    werde ich doch glatt einmal ausprobieren!

    gruß

    Marcel
     

Ähnliche Themen

  1. PHP Mehrfachvererbung
    Von jans2 im Forum PHP
    Antworten: 14
    Letzter Beitrag: 02.09.10, 18:39
  2. Antworten: 4
    Letzter Beitrag: 21.07.09, 20:58
  3. Antworten: 4
    Letzter Beitrag: 22.03.06, 20:50
  4. Mehrfachvererbung in Java
    Von mkoeni1 im Forum Java
    Antworten: 2
    Letzter Beitrag: 10.12.05, 16:49
  5. Mehrfachvererbung/eigene Klassen
    Von kittie im Forum Java
    Antworten: 7
    Letzter Beitrag: 14.04.04, 12:48