Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

[C++] initialiser les references

kiroukou, le jeudi 24 février 2005 à 14:33:54 
 Signaler ce message aux modérateurs

Bonjour à tous,
Voila j'avance doucement avec le C++ mais il y a des choses qui m'échappent encore ;)
Je vous joins ma classe, j'ai mis des commentaires là où il y a des problèmes.
D'autres fichiers sont nécéssaires pour compiler, mais je pense que mon probleme est tellement simple que vous n'aurez pas besoin de tester, en regardant ca devrai vous suffir :D

#include <iostream>
#include <string>
#include <vector>

using namespace std;

//Classe abstraite qui servira de base pour tous les autres objets du projet
class Basic
{
	public :
			CompilManager& 	_rManager;
			Basic&		_rFils;
			Basic&		_rParent;
			Basic&		_rSuivant;
			int		_id;
			
			//Constructeurs
			Basic(CompilManager&, Basic&, Basic&, Basic&);
			Basic(CompilManager&);
			//Constructeur de copie
			Basic(const Basic& b)
			:	_rManager (b._rManager)	,
				_rParent (b._rParent)		,
				_rSuivant (b._rSuivant)		,
				_rFils (b._rFils)			
			{
				_id = b._id; //On peut pas mettre getId car le parametre est en const!! A se souvenir	
			}
			// DESTRUCTEUR
			inline ~Basic(){ std::cout << "Basic detruit" << std::endl; }
		
			//Methode virtuelle pure , qui fait de cette classe une classe abstraite
			virtual string	convertASM(void) = 0;
			//Getters
			Register& 		getFreeRegister(const int) const;
			Basic& 		getNext(void) const;
			Basic& 		getParent(void) const;
			Basic& 		getChild(void) const;
			CompilManager& 	getManager(void) const;
			int			getId(void) const;
			//setters
			void 			setNext(Basic&);
			void 			setChild(Basic&);
			void 			setParent(Basic&);
			void 			setManager(CompilManager&);
			
//Ne ps oublier ce *!&$ù*" de point virgule a  la fin !!			
};

Basic::Basic(CompilManager& manager)
	://Initialisation des references  => erreurs comme quoi les autre references ne sont pas initialisées pourquoi et comment??
	_rManager(manager)			
{
	_id = _rManager.getId();
	cout << "Basic instancie" << _id << endl;
}


Basic::Basic(CompilManager& manager,Basic& parent, Basic& suivant, Basic& fils)
	://Initialisation des references
	_rManager(manager)	, 
	_rParent(parent)		,
	_rSuivant(suivant)		, 
	_rFils(fils)		
{
	_id = _rManager.getId();
	cout << "Basic instancie" << _id << endl;
}


Register& Basic::getFreeRegister(const int type ) const
{	
	Register r;
	return r; //Warning ici mais c'est normal, c'est juste un code temporaire
	/*
	if( _rManager.getRegisterManager().getFreeRegister(type, r) == false )
	{
		cout << "Basic.getFreeRegister / Impossible d'avoir un registre de libre "<<endl;
	}
	return r;
	*/
}

Basic& Basic::getNext(void) const
{
	return  _rSuivant;
}

Basic& Basic::getParent(void) const
{
	return _rParent;
}
Basic& Basic::getChild(void) const
{
	return _rFils;
}
CompilManager& Basic::getManager(void) const
{
	return _rManager;
}
int Basic::getId(void) const
{
	return _id;
}


void 	Basic::setNext(Basic& b)
{
	_rSuivant = b; // Le compilo semble détester cette synthaxe ....  Pourquoi?
}
void Basic::setChild(Basic& b)
{
	_rFils = b;
}
void Basic::setParent(Basic& b)
{
	_rParent = b;
}

void Basic::setManager(CompilManager& c)
{
	_rManager = c;
}

Pour faciliter votre réponse voila ce que me sort le compilo chez moi :
In file included from main.cpp:14:
classes/Basic/Basic.h: In constructor `Basic::Basic(CompilManager&)':
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rFils'
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rParent'
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rSuivant'
classes/Basic/Basic.h: In member function `Register& Basic::getFreeRegister(int) const':
classes/Basic/Basic.h:73: warning: reference to local variable `r' returned
classes/Basic/Basic.h: In member function `Basic& Basic::operator=(const Basic&)':
classes/Basic/Basic.h:109: error: non-static reference member `CompilManager&Basic::_rManager', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rFils', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rParent', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rSuivant', can't use default assignment operator


Je precise que j'ai regardé sur le forum et dans la FAQ sans succés. J'espère ne pas avoir mal regardé.. :roll:

En vous remerciant
++

1

Desty Nov@, le jeudi 24 février 2005 à 14:57:25

Tiens c'est marrant, ce post me dit qq chose...
c'est con, les copier/coller des posts de developpez.com ne marche pas avec les :roll: ;-) tu peux retourner voir ton post sur l'autre site, il y a des réponses =)

Répondre à Desty Nov@

2

kiroukou, le jeudi 24 février 2005 à 15:03:42

Oui en effet, et j'ai pas honte :)
A des forums différents correspond des gens differents et donc des reponses differentes :) Cela me permettrai de voir les diverses possibilitées :)

Merci de ta reponse dans tout les cas :D
++

Répondre à kiroukou

3

Desty Nov@, le jeudi 24 février 2005 à 15:27:13

Ah mais tu n'as pas avoir honte du tout! au contraire!
je suis pareil que toi : si je navigue entre les 2 forums, c'est que les 2 sont différents et très intéressants!

et comme tu dis, c'est dans la différence qu'on trouve la complémentarité et ce qui nous convient !

ET QUE VIVE LES FORUMS !!!! =)))

Répondre à Desty Nov@

4

 splotch, le samedi 1 novembre 2008 à 19:49:24

Et c quoi le site ou il y a la réponse ?

Répondre à splotch
[C++] initialisation dynamique de pointeur Je debute en C++ et je prends en main un code deja existant. Les pointeurs sont pour l instant defini de maniere arbitraire avec une taille maximum bien superieure a nos besoins. J ai donc voulu faire une initialisation dynamique mais je m heurte a... www.commentcamarche.net/forum/affich-1526883-c-initialisation-dynamique-de-pointeur
[C#] Une référence d'objet est requise Bonjour, J'ai ces deux lignes de code : int[] tab = new int[6]; tab = fonction(arg1, arg2); Sachant que la fonction me retourne un tableau d'entier de taille 6, j'obtiens l'erreur suivante : Une référence d'objet est requise pour la propriété, la... www.commentcamarche.net/forum/affich-5426776-c-une-reference-d-objet-est-requise
Initialisation aléatoire d'un tableau 2D- c++ (Résolu) Bonjour, Je souhaiterai créer un tableau de char à 2 dimensions qui s'initialise aléatoirement. la 1ère colonne et la derniere ligne de ce tableau est prédéfini. exemple : 4 | c | b | c | a 3 | b | a | a | b 2 | a | b | c | a 1 | a | b | b | a ... A .... www.commentcamarche.net/forum/affich-4361495-initialisation-aleatoire-d-un-tableau-2d-c
Les files en langage CLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un... www.commentcamarche.net/faq/sujet-8282-les-files-en-langage-c
Les bases pour référencer votre site professionnel facilementLes bases pour référencer son site professionnel facilement Avoir un site Internet c'est bien mais faire en sorte qu'il attire un grand nombre de visiteurs c'est indispensable ! En effet, le Web abrite une quantité colossale de contenus et sortir... www.commentcamarche.net/faq/sujet-9444-les-bases-pour-referencer-votre-site-professionnel-facilement
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
[C++] initialiser un tableau variableBonjour, en C++ comment faire pour initialiser à zéro un tableau de taille dynamique ? merci a+ www.commentcamarche.net/forum/affich-3759217-c-initialiser-un-tableau-variable
[DEV-C++] fonction : undefined reference toBonjour, je débute en C, j'ai fait ma première fonction, et DEV-C++ refuse de compiler mon programme, que voici. EX1.C /* programme mettant à zéro la diagonale du milieu de la matrice */ #include #include "matrice.h" main() { int **mat; int... www.commentcamarche.net/forum/affich-2838739-dev-c-fonction-undefined-reference-to
[C] Initialiser une chain de caractèresBonjour, Je n'arrive pas a initialiser une chaine de caractères qui se trouve dans une structure. Voila ma structure: typedef struct element element; struct element { char * mot; struct element *nxt; }; typedef element* llist; et ce que j'essai de... www.commentcamarche.net/forum/affich-2750329-c-initialiser-une-chain-de-caracteres
Télécharger Dev-C++Dev-C++ est un environnement de développement intégré (IDE) en C/C++. Son compilateur est basé sur Mingw de GCC, mais il peut également être utilisé avec CygWin. www.commentcamarche.net/telecharger/telecharger-59-dev-c
Télécharger Visual C++ 2008 ExpressVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C. www.commentcamarche.net/telecharger/telecharger-34056350-visual-c-2008-express
Les chaînes de caractères en C++Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une... www.commentcamarche.net/contents/cpp/cppstring.php3
Langage C - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
Langage C++ - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/cpp/cppvar.php3