Newsgroup: it.comp.lang.c++
Titolo: Tutorial di Marotta.. domanda..

Salve, stavo leggendo il capitolo riguardante l'ereditarietą; riporto un
esempio:
class MyClass {
public:
void PublicMember(int, char);
void Member2();
/* ... */
protected:
int ProtectedMember();
/* ... */
private:
/* ... */
};
class Derived1 : private MyClass {
public:
MyClass::PublicMember;
using MyClass::Member2;
MyClass::ProtectedMember; // Errore
/* ... */
};
Paolo dice che l'ultima riga nella definizione della classe Derived1 causa
un errore perchč si tenta di rendere public un membro protected della classe
base. Perņ provando a compilare con MS VC++ 6.0 non mi da nessun errore..
(in fase di compilazione). Potreste spiegarmi il perchč? Grazie, bye

 (in fase di compilazione). Potreste spiegarmi il perchè? Grazie, bye
Ha ragione Paolo e ha torto il VC++. Paolo nel suo tutorial spiega il
comportamento che ci si attende da un compilatore conforme allo
standard. Il VC++ sfortunatamente non lo è, visto che è uscito prima
che lo standard venisse ratificato (e forse anche per altr motivi, ma
non porta a niente starne qui a discutere). In questo caso compila
correttamente codice che non dovrebbe compilare, e allo stesso tempo
capita (spesso) che non compili codice che dovrebbe compilare. Prova
con altri compilatori magari, il VC++ non è il massimo per imparare da
zero.
Il tuo codice infatti non compila, correttamente, su Borland C++ 5.5.
Il messaggio di errore è chiarissimo:
prova.cpp:
Error E2009 prova.cpp 16: Attempt to grant or reduce access to
'MyClass::ProtectedMember()'
*** 1 errors in Compile ***

 *** 1 errors in Compile ***
Eh.. hai proprio ragione, nemmeno del Vc++ ci si può fidare.. però ha l'IDE
e tutto il resto che facilitano un sacco la vita.. - in ogni caso installerò
anche il Borland C++ 5.5, ma non esisteva una specie di IDE anche per questo
compilatore? Grazie cmq della risposta. Bye

 compilatore? Grazie cmq della risposta. Bye
l'IDE del Borland C++ 5.5 è il Borland C++ Builder 5, non so poi se ne
esistano altri free in giro...
PS: *soprattutto* del VC++ non ti puoi fidare ;-)

 ha scritto nel messaggio
news:tXPd9.6430$%z1.1...@twister1.libero.it...

Eheh, e invece il Dev C++ come lo vedi? Usa il Gcc come compilatore? E'
standard o fa i capricci come il VC++? Grazie delle risposte. Bye

 standard o fa i capricci come il VC++? Grazie delle risposte. Bye
Il dev-C++ da quel che dicono non è male. Io l'ho potuto utilizzare
solo durante un corso di C++ e non mi sembrava male come IDE, anche se
è un po' elementare. Il mio consiglio cmq è quello di lasciare perdere
gli IDE e imparare a utilizzare un compilatore da linea di comando che
torna sempre utile.

 torna sempre utile.
Finalmente ho installato il Borland C++ 5.5 e funziona tutto alla
meraviglia. Quello che mi faceva fare il MSVC++ non me lo fa fare il Borland
:-) Grazie dell'aiuto, bye
P.S. Ma tu come editor cosa usi? Il semplice blocco note o qualcos'altro?
Magari consigliamene uno..

 Magari consigliamene uno..
uso l'editor del VC++ 6.0 ;-))

 using MyClass::Member2; <--- come qui?
--
Luigi
--
void f (OS x) {while (x.getbugs() > 0); destroy(earth);};
f (windows); // Meno male!

 ha scritto nel messaggio
news:a77e9.10229$AW6.2...@twister2.libero.it...

Immagino che usi anche il visual assist ;PP A me però non va di reinstallare
il Visual C++ solo per l'editor :-) quindi dovrò trovarne un altro. Riguardo
le librerie, prima farò un pò di pratica, poi le scaricherò sicuramente.
Byez


Da quanto ho capito, l'uso della direttiva using è facoltativo, sia se
scrivi:
MyClass::PublicMember;
o
using MyClass::PublicMember;
il risultato è lo stesso. Byez