Boost lambda et objet complexe - C++ - Programmation
Marsh Posté le 26-03-2010 à 21:41:29
Un truc dans le genre je dirais (non testé) :
Code :
|
Marsh Posté le 26-03-2010 à 21:46:16
faut passer par bind effectivement.
Regarde du coter d ephoenix pour plus d'expressivité
Marsh Posté le 26-03-2010 à 21:59:31
Ah effectivement, c'est comme cela que cela fonctionne...
Merci de votre aide
# Et je vais aller voir Phoenix!
Marsh Posté le 30-03-2010 à 17:12:27
Bon, j'ai un nouveau souci...
Cela compile:
Code :
|
Mais pas cela:
Code :
|
# donc exactement pareil, mais avec un "resize" a la place du "push_back"...
Le compilo, me retourne cela:
Citation : 1>------ Début de la génération : Projet : SimpleProject, Configuration : Debug Win32 ------ |
Avez-vous d'où se trouve le pb?
Marsh Posté le 30-03-2010 à 17:18:37
Ah autant pour moi... je crois que c'est l'argument par defaut sur la valeur par defaut des variables...
[edit] Je l'ai corrigé, mais a priori ce n'est pas cela...
Code :
|
Marsh Posté le 30-03-2010 à 19:50:51
MSVC ne peut pas desambiguer les 2 variantes de resize apparement.
Marsh Posté le 30-03-2010 à 20:31:02
Oui, on dirait bien...
je viens de tester sur ma machine perso avec gcc... et effectivement, là ça passe...
Marsh Posté le 02-04-2010 à 00:55:47
comme dit 'Joel' , si la function est overloaded , le compiler ne peut
pas choisir le type exacte
-> tu ajoute un casting , pour specifier le type du fonction
et ca va marcher (j'ai tester ca avec un ancien gcc)
et je crois que ca marche partout.
Marsh Posté le 02-04-2010 à 18:44:09
Hello,
Est ce que tu pourrais me montrer comment tu fais cela? (J'avoue ne pas être super a l'aise avec les pointeurs de fonctions. Quand on a gouté a boost::function<> j'ai même plus envie d'aller chercher plus loin
A coup de mix entre boost::bind, et boost::lambda::bind j'ai sorti un truc comme cela: (bon, qui "a priori" a l'air de compiler & marcher)
Code :
|
Je testerai avec gcc ce soir, mais j'ai un peu l'impression qu'il n'y a que VS pour compiler ca... (je deviens un peu critique quand j'ai vu ce que VC++ 6 étais capable de compiler :S)
# Je suis suis sous le 2008
Avec un vieux cast sur des pointeurs de fonction, j'ai tenté ça. mais bon, ca ne compile pas... comme dit précédemment les pointeurs de fonctions et moi...
Code :
|
Bon, dans tous les cas, pour ce type de cas je reviens sur un bon vieux for... Je compte pas vraiment faire du code de goret... c'est plus pour culture générale que j'aimerai bien savoir comment on aurait pus régler le pb...
Merci
Marsh Posté le 03-04-2010 à 00:19:42
Code :
|
c'est ton code , le cast est correct , mais les parameters! ...
la deuxieme bind est peut etre plus compatible.
.. et si tu veut , utilise quelque typedef pour reduire la longueur .
et tu peut meme eviter ce bind .
Marsh Posté le 26-03-2010 à 19:10:39
Bonjour,
J'ai un problème assez récurent avec boost::lambda: je n'arrive pas à l'utiliser avec des objets complexes.
Par exemple je veux compter combien il y a d'éléments dans un tableau 2D. Je voudrais pouvoir faire cela:
Et donc, ici il râle car size n'est pas un élément de lambda_functor<T>.
Dans la doc, j'ai crus comprendre qu'il fallait faire quelque chose comme cela:
Mais bon, le compilo dit que ce n'est pas ça...
Est ce que quelqu'un pourrai m'expliquer comment on l'utilise dans ce genre de cas ?
Merci