Pb de déclaration...;

speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 - 27 avril 2005 à 09:47
cs_VinceR Messages postés 47 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 27 avril 2005 - 27 avril 2005 à 11:12
Bonjour,
J'ai un petit problème! En effet je sais comment on peut définir une variable en tant qu'objet en VB mais pas en C++!!!
En VB, on aurait quelque chose comme:

Dim BlockReference As Object

..............avec BlockReference la variable.

Quel serait donc l'équivalent en C++ :?:
merci d'avance....

3 réponses

cs_VinceR Messages postés 47 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 27 avril 2005
27 avril 2005 à 10:34
Salut !

On ne peut pas comparer la notion d'objet VB à celle du C++.
En VB on laissera faire le "compilateur" pour la déclaration des objets.
En C++, Il faut pour ainsi dire suivre les étapes de la vie de l'objet. Ce qui met en oeuvre la notion de pointeur que "ne possède pas à haut niveau le VB".

L'objet doit être avant tout de chose définie par sa classe (déclaration):

Exemple:

CMaClasse
{
int a;
int b;
void test(void);
};

Ensuite pour l'utilisation on aura 2 possibilités:

1)

Création de l'objet en lui-même:
CMaClasse monObjet; (s'utilise quand c'est local ou global)
monObjet.a=10;
monObject.test();

Pas besoin de destructeur (appelé automatiquent)
(Ressemble bcp au VB)

2)

CMaClasse *monObjet;

Constructeur:
monObjet = new CMaClasse();

monObjet->a=10;
monObjet->test();

Destruction:
Delete monObject;

(Ici on touche la notion de pointeur)

Si l'on utilise cette deuxième méthode, il faut qu'à une construction corresponde une destruction...

J'espère que cela te mettra sur la voie, la notion d'objet est très puissante, c'est une philosophie, cela ne se résume pas en 4 lignes...

Courage

VinceR
0
speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 1
27 avril 2005 à 10:58
En fait pour bien comprendre, ce que je cherche, voici l' équivalence que je cherche:

Dim AcadApp As AutoCAD.AcadApplication
Dim BlocRef As AcadBlockReference

ou AcadApp renvoit à l' application autocad (logiciel)
et BlocRef à un "class" présent dans la librairie autocad

en fait en borland C++ pour utiliser une bibliothèque on fait (par exemple pour excel):

Variant Excel;
Variant Workbook, Workbooks;

// Ouverture excel
vMSExcel=Variant::CreateObject("Excel.Application");
vMSExcel.OlePropertySet("Visible", true);

//Ouvrir un nouveau classeur
vWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vWorkbook = vWorkbooks.OleFunction("Add");

---> alors qu'en VB:

Dim Excel As Excel.Application
Dim Workbooks As ExcelWorkBook

Workbook=WorkBooks.Add
0
cs_VinceR Messages postés 47 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 27 avril 2005
27 avril 2005 à 11:12
Ok je vois, moi ce que j'utiliserai:

CocreateInstance avec les CLSID qui vont bien... Il faudrait trouver un .H pour définir tes objets...

Je fais quelques tests...

Courage!

VinceR
0
Rejoignez-nous