[C++]problemes generes par une classe-errerus incomprehensibles
lolobardon
Messages postés6Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention 8 décembre 2005
-
7 déc. 2005 à 07:12
lolobardon
Messages postés6Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention 8 décembre 2005
-
8 déc. 2005 à 09:30
Bonjour,
je suis eleve ingenieur en electronique et j'effectue mon dernier semestre a Pekin en bossant sur un projet en C++ d'ou beaucoup de difficultes pour moi. Bref.
Je dois controller une camera a partir d'un pc en utilisant un protocole particulier. J'ai trouve une classe en c# qui correspond mais elle genere 3 types d'erreurs.
1. par exemple je declare plusieurs variables comme ci dessous
private :
const byte STX = 0xA0;
Voici les 2 erreurs generees:
error C2258: illegal pure syntax, must be '= 0'
d:\program files\microsoft visual studio\myprojects\tcp error C2252: 'STX' : pure specifier can only be specified for functions
2.
public :
//definition de types enum Pan {Left PanLeft,Right PanRight};
Erreur:
error C2065: 'PanLeft' : undeclared identifier
3.
Les fonctions de control de la camera renvoie un message de compose de 8 bits
Par exemple :
byte[] CameraZoom(uint deviceAddress,Zoom action);
Avec ces 3 types d'erreurs j'ai finalement des 100 d'erreurs car toujours les memes.
Si vous avez besoin de precisions pour me repondre ou si vous souhaitez jeter un coup d'oeil a mon code, n'hesitez pas a me demander.
Merci d'avance
Lolo
A voir également:
[C++]problemes generes par une classe-errerus incomprehensibles
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 7 déc. 2005 à 13:04
"private : const byte STX = 0xA0;"
Pourquoi pas "const unsigned char STX = 0xA0; ?"
Mais bon, le pb vient du fait que tu ne peux pas donner de valeur par
défaut a des champs d'une classe. Pour donner des valeurs par défaut,
c'est le role du constructeur.
Pour caa:
//definition de types
enum Pan {Left PanLeft,Right PanRight};
Erreur:
error C2065: 'PanLeft' : undeclared identifier
L'erreur est explicite, c'est quoi "PanLeft" ? ca doit pas etre visible par ta classe.
Pour cette erreur: "byte[] CameraZoom(uint deviceAddress,Zoom action)"
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 7 déc. 2005 à 13:10
J'ajoute une chose, pour ton problème de const byte STX = 0xA0.
En fait, tu peux donner une valeur par défaut a des champs du classe
seulement si ces champs sont déclarés "static". C'est à dire que tout
les objets de ta classe ont en commun ce champ. Donc si un objet le
modifie, il est modifié pour tous les autres. Mais comme tu le déclares
"const" il n'y a pas de problème.
Pour donner une valeur par défaut à un champ static, c'est comme ca:
Dans ton .h:
class A
{
...
static const byte STX = 0xA0; // soit directement, soit tu le définies dans ton .c si elle n'est pas private
lolobardon
Messages postés6Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention 8 décembre 2005 8 déc. 2005 à 09:30
Salut,
merci beaucoup pour tes reponses. J'ai essaye ce que tu m'as dit mais j'ai toujours les memes problemes.
Si tu as le courage, j'ai mis ci dessous la classe d'ou vient le probleme.
Pour les variables const, je veux les laisser en private donc j'ai fait ce que tu as dit mais ca a pas change.
J'ai aussi tente des les mettre dans mon constructeur mais aucune difference.
Au niveau des erreurs avec enum, les variables qui sont declarees inconnues sont en fait declarees juste au dessus. Par exemple pour Pan Left,
Data2 Byte4, deuxieme ligne, c'est defini. Donc, d'ou vient le probleme?
Autre question, a la fin de mon .h, j'ai defini une structure. Est-ce autorise? Est-ce la bonne maniere? Doit-on plutot la mettre dans le constructeur?
J'ai aussi remplace le type byte par le type unsigned char comme tu me l'a conseille. Ensuite, au lieu que les fonctions renvoient unsigned char[], j'ai tente unsigned char* mais pas de difference.