Newsgroup: it.comp.lang.c++
Titolo: creazione classe

Ciao, sto iniziando adesso a studiare il C++ sul libro di Stanley B. Lippman
"C++ Corso di Programmazione", conosco il C e mi puo' aiutare per i costrutti,i
tipi di dati i puntatori ecc..., ma non mi e' d'aiuto per
quel che riguarda le classi...
il problema e' il seguente: per imparare ho creato una classe
chiamata Scheduler dove dentro ci vorrei mettere le funzioni dell'oggetto
ITaskScheduler
dichiarato dentro mstask.h
vorrei creare una classe mia (credo e' il miglior modo per imparare)che mi
permetta
di creare, modificare o distruggere un task
nel .h metto:
#include <iostream.h>
#include <mstask.h> 
# ifndef _SCHEDULER_
# define _SCHEDULER_
class Scheduler
{
	public:
		/* costruttore */
		Scheduler(char *);
		/* inizializzazione del modello COM dell'oggetto e 
		   creazione di un oggetto Task Scheduler */
		int Init();
	protected:
		char *NomeTask; /* nome del task da creare o modificare... */
};
#endif
nel .cpp metto:
#include "Scheduler.h"
Scheduler::Scheduler(char *ptszNomeTask)
{
	(*ptszNomeTask) ? NomeTask = ptszNomeTask : NomeTask = NULL;
}
int Scheduler::Init()
{
 
	HRESULT hr = ERROR_SUCCESS;
        if (!*NomeTask) return PTNULL; /* puntatore nullo */ 
	ITaskScheduler *pITS;
        hr = CoInitialize(NULL);
	if (SUCCEEDED(hr))
	{
	    hr = CoCreateInstance(CLSID_CTaskScheduler,
				   NULL,
				   CLSCTX_INPROC_SERVER,
				   IID_ITaskScheduler,
				   (void **) &pITS);
		 if (FAILED(hr))
		 {
			CoUninitialize();
			return (1);
		 }
	}
	else
	{
		 return (1);
	}
	return (0);
}
Gli errori (3) che mi da il compilatore (MS Visual C++) e' il seguente:
inking...
Scheduler.obj : error LNK2001: unresolved external symbol _CLSID_CTaskScheduler
Scheduler.obj : error LNK2001: unresolved external symbol _IID_ITaskScheduler
Debug/Scheduler.exe : fatal error LNK1120: 2 unresolved externals
cioe' lui non riesce a trovare le definizioni delle due costanti
_CLSID_CTaskScheduler e
_IID_ITaskScheduler...
Dove sbaglio????
So che l'oggetto ITaskScheduler riguarda la programmazione sotto Win32 ma sono
sicuro che la somarata l'ho fatta nella creazione della classe e quindi non
credo di essere OT...
e comunque se potete datemi un aiuto...
ho iniziato da poco e non riesco a capire l'errore, ma neanche vorrei lasciar 
perder questa classe che sto creando perche' e' mi invoglia a studiare il c++
e devo risolvere questo problema...
Ciao a tutti e grazie in anticipo...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Dove sbaglio????
Ciao Stefano,
tu mi stai dicendo che stai imparando a programmare in C++ e cominci subito
con questo esempio?
Io penso che tu hai usato un wizard speciale di Visual Studio che ti
permette di creare oggetti COM, ovvero di creare speciali files .DLL che ti
permettono di esportare le tue funzioni. Ovvero che in futuro tu potrai
sfruttare le tue COM DLL, le funzioni che tu hai esportato, "semplicemente"
includendo in un tuo progetto di test la tua stefano.dll e chiamando le
funzioni (interfacce) che esporti.
In questo caso CLS_IDCStefano_class e' l'identificatore di classe
e IID_IStefano_Class e' l' identificatore dell'interfaccia che poi sara'
registrato nel registro delle chiavi di Windows.
Come vedi, hai semplicemente usato il wizard sbagliato per cominciare a
programmare in C++.
Rifatti un progetto ed usa Console Win 32 questa volta per fare un progetto
usando il C++ standard e lascia perdere la programmazione COM per ora.
Maurus