Salutations !
Je (re)débute en C++, j'essaye un peu des trucs, et je suis tombé sur une erreur que je comprends pas trop…
le code suivant
class A {
};
class B {
B(A* a) {
}
};
class C {
A a;
B b(&a);
};
me retourne à la compilation
$ gcc test.cpp
test.cpp:13:9: error: expected identifier before ‘&’ token
13 | B b(&a);
| ^
et je comprends pas bien ce qu'il veut… Si quelqu'un peux m'expliquer, merci d'avance :D
# Déclaration/Implémentation
Posté par Christophe . Évalué à 2. Dernière modification le 03 juillet 2021 à 16:59.
Ici, ton
est une déclaration de classe et «a» et «b» sont des membres de C. Il n'est donc pas possible de définir leur comportement tout de suite. Le compilo s'attend à un truc du genre:
[^] # Re: Déclaration/Implémentation
Posté par WrathOfThePixel . Évalué à 1.
Ok merci, pas sûr de tout bien piger mais je vais regarder ça de plus près…
[^] # Re: Déclaration/Implémentation
Posté par AncalagonTotof . Évalué à 1.
C'est dimanche matin matin, pas bien réveillé … Je prends le risque de proposer un truc que j'ai pas essayé, changer :
en
[^] # Re: Déclaration/Implémentation
Posté par _kaos_ . Évalué à 2. Dernière modification le 04 juillet 2021 à 10:41.
Nope :)
B n'est pas de type A ;)
Matricule 23415
[^] # Re: Déclaration/Implémentation
Posté par AncalagonTotof . Évalué à 1. Dernière modification le 05 juillet 2021 à 08:19.
On est lundi matin, et je confirme, j'étais carrément pas réveillé, la vache, c'est moche …
Mais du coup,
passe ?
C'est juste pour voir si je suis mieux réveiller les jours où je bosse …
[^] # Re: Déclaration/Implémentation
Posté par AncalagonTotof . Évalué à 1.
Pas assez réveillé pour l'orthographe/grammaire …
Mais pas loin, si l'objectif est bien d'avoir un attribut
b
de classeB
dansC
. Il manquait unpublic
dansB
, sinon, le constructeur estprivate
:# Que prend la méthode?
Posté par T_T_T . Évalué à 2.
Je comprends que tu déclares donc une méthode
C::b
qui renvoie unB
et qui prend un argument nomméa
,référence
vers un typenon fourni
?Si tu veux dire que ta méthode
C::b
prend un argument de type référence vers unA
, alors la modification ci-dessous s'impose.Ce code compile, mais l'édition des liens n'est pas garantie (
C::b
n'est pas définie).Et ce n'est pas non plus ce que tu cherches à faire; mais ça, c'est un autre histoire !
# non-static data member with initializer (C++11)
Posté par Space_e_man (site web personnel) . Évalué à 2.
→ https://en.cppreference.com/w/cpp/language/class
Ce qui me semble pouvoir être le plus proche de ton code…
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.