nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

templates und vererbung

Von: ruebezaehler (ruebezaehler@web.de) [Profil]
Datum: 30.04.2008 17:18
Message-ID: <fva2ju$eig$03$1@news.t-online.com>
Newsgroup: de.comp.lang.iso-c++
Hallo,
ich habe ein Problem bei der Vererbung von Klassen-Templates.

Im Beispiel ist eine Basis-Klasse C_B_, welche nur ein oeffentliches
Datum var enthaelt. Die Klasse C_B ist von C_B_ private abgeleitet.
Trotzdem ist var vom Benutzer ueber C_B zugaenglich. Das gilt nicht fuer
die Klasse C_A. Hier kann die Sichtbarkeit fuer den Benutzer von C_A
nicht nur ueber die Sichtbarkeit von C_A_, sondern auch die Variable var
mittels "private: / public: using C_A_::var;" gesteuert werden.

Hinweis: Compiler g++ (GCC) 4.1.3

Kann mir jemand weiterhelfen bzw. die verschiedene Behandlung des
Compilers erklaeren.

class C_A_
{
public:
int var;
virtual ~C_A_( void ){}
};

class C_A : private C_A_
{
private:
using C_A_::var;
public:
C_A( void ){}
virtual ~C_A(void) {}
};


template<typename T>
class C_B_
{
public:
T var;
virtual ~C_B_( void ){}
};

template<typename T>
class C_B : private C_B_<T>
{
private:
using C_B_<T>::var;
public:
C_B( void ){}
virtual ~C_B(void) {}
};


int main(int argc, char* argv[])
{
C_B<int> oB;
oB.var = 5;// keine Fehlermeldung des Compilers

C_A oA;
oA.var = 5;// Fehler: »int C_A_::var« ist unzugaenglich

return 0;
}//

[ Auf dieses Posting antworten ]

Antworten