Newsgroup: it.comp.programmare.win32
Titolo: CPropertySheet - Dove sbaglio?

Linguaggio di programmazione: Visual C++ 6.0
Libreria: M.F.C.
S.O. Windows 98 SE
-------------------------------------------------------
Ho un'applicazione con una vista derivata dalla classe CFormView. Necessito
di visualizzare una pagina delle proprietà quando clicco con il pulsante SX
del mouse sulla vista. Il procedimento che utilizzo è il seguente:
1) dall'editor di risorse di VC mi creo due risorse pagine delle proprietà
(tante quante me ne servono) con i relativi                 controlli e le
eredito dalla classe CPropertyPage. Il codice (.h e .cpp) per le due pagine
è incluso nello stesso file                 (ovvero Property.h e
Property.cpp). Le classi delle due pagine sono rispettivamente CPage1 e
CPage2;
2) creo una classe COperations (sempre in Property.h e Property.cpp)
derivata da CPropertySheet;
3) alla classe COperations aggiungo due variabili membro di tipo CPage1 e
CPage2, ovvero m_Page1 e m_Page2;
4) nel costruttore della classe COperations aggiungo le due pagine
specificando il loro indirizzo, ovvero
                                                AddPage(&m_Page1);
                                                AddPage(&m_Page2);
5) nella classe vista derivata da CFormView aggiungo m_ops di tipo
COperations;
6) mappo il messagio WM_LBUTTONDOWN nella classe vista e nella relativa
funzione aggiungo
m_ops.DoModal();
Durante la compilazione mi appare il seguente messaggio di errore nel file
relativo alla vista:
                        Error C2512: No appropriate default constructor
available
Ragazzi, dove sbaglio?
Grazie mille
Sergio

 available
Devi riportare anche (e soprattutto) la riga per la quale ti viene
segnalato questo errore. Comunque pare che tu abbia qualche classe che
contiene soltanto dei costruttori che richiedono obbligatoriamente dei
parametri; il C++ impone che qualunque classe abbia un costruttore di
default, ossia un costruttore senza parametri obbligatori.
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/

 default, ossia un costruttore senza parametri obbligatori.
Allora, l'errore mi viene segnalato per il costruttore della classe
vista...ovvero per
CEconomyView::CEconomyView() ----- con CEconomyView derivata da CFormView
Grazie

...Scusami, volevo aggiungere che per una classe derivata da CPropertySheet
(classe delle finestre delle proprietà) i costruttori sono due, entrambi con
parametri obbligatori! Bisogna quindi aggiungerne uno senza parametri?
Consultavo un esempio su "Programmare Visual C++ - V Edizione" di Kr.ky e lì
utilizzano i costruttori così come io faccio...ma a loro funziona!!
(ovviamente)
Sergio

 wrote in message
news:39e95495.0@inetnews...

I costruttori hanno un meccanismo di ereditarieta` diverso dalle normali
funzioni membro, in particolare vengono chiamati sempre tutti e in
sequenza (dalla classe base scendendo via via tutte le derivate). Non
vengono scavalcati come succede per le normali funzioni membro. Quindi
in qualunque classe, anche quelle derivate, e` necessario fornire il
default constructor.
Anche il ClassWizard del C++, quando aggiungi una classe
CPropertyPage-derived, dichiara un normale costruttore senza
argomenti...



Ho capito il mio errore: nella costruttore della classe derivata da
CFormView (che mi permetteva di visualizzare la finestra delle proprietą con
un clic su di essa) dovevo settare il titolo della finestra delle proprietą.
Esempio:
CBaseView::CBaseView () : m_ops("Questo č il titolo")
{
// questo č il costruttore della classe derivata da CFormView
// m_ops č un oggetto di tipo CPropertySheet
}