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++
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
- ruebezaehler (30.04.2008 19:10)
- Daniel_Krügler (01.05.2008 19:12)
