Merkwürdiges Verhalten
Verfasst: Mo Jun 27, 2011 8:18 pm
Bei diesem Code hier:
Meckert mein Compiler(MSVC 2008 Professional) bei den letzten Zeilen rum.
Aber ich kann mir das nicht erklären?
Die Objektinitialisierung nimmt er an und damit müsste doch myFoo.print() das gewünschte Ergebnis bringen?
Code: Alles auswählen
#include <iostream>
using namespace std;
#include "heterachie.h"
class base
{
protected:
int a;
public:
base(){a=1;}
void printA(){cout << a << endl;};
virtual void print(){cout << a << endl;}
};
class foo : public base
{
protected:
int b;
public:
foo(){b = 2;}
void printB(){cout << b << endl;}
void print(){cout << b << endl;}
void add(){cout << a + b << endl;}
};
class bar : public base
{
private:
int c;
public:
bar(){c = 3;}
void printC(){cout << c << endl;}
void print(){cout << c << endl;}
void add(){cout << c << endl;}
};
class FooBar : public foo, public bar
{
private:
int d;
public:
FooBar(){d=4;};
void print(){cout << d << endl;};
};
void TestFunc()
{
FooBar myFoo();
foo fo();
bar ba();
myFoo.print(); //Fehler: Links von ".print" muss sich eine Klasse/Struktur/Union befinden.
fo.print(); // Ebenfalls
ba.print(); //Selber fehler
}
Aber ich kann mir das nicht erklären?
Die Objektinitialisierung nimmt er an und damit müsste doch myFoo.print() das gewünschte Ergebnis bringen?