C ++ erreur: un attendu de l'initialiseur avant de [nom de la fonction]
Je suis rafraîchissante mon auto sur le C++ (je n'ai pas fait ça depuis l'école) et j'ai écrit un programme simple, juste pour déconner. Mon problème est que quand je compile le programme, elle s'étouffe en indiquant
"erreur: attendu initialiseur avant "stringThing'"
est-il une raison pourquoi c'est faire? Je sais que cela peut être une question de noob alors j'ai vérifié stackoverflow et ne pouvait pas trouver toute question pertinente qui m'a donné une réponse.
*Je suis de l'utilisation de GNU le compilateur GCC
Code:
#include <iostream>
using namespace std;
void string stringThing (string shiftdir, string &teststring)
{
if (shiftdir == "right")
{
teststring = teststring >> " " >> "Bit Shifted right";
}
else
{
teststring = teststring << " " << "Bit Shifted left";
}
}
int main()
{
string test;
cout << stringThing("right", "I have done a ") << endl;
return 0;
}
- C'est le genre de question que de réponse pas par hasard cinq minutes de Googling, mais par l'apprentissage de C++ à partir d'un bon livre. Cette syntaxe incorrecte n'est pas enseigné dans toutes les C++ livre.
Vous devez vous connecter pour publier un commentaire.
Le type de retour de
stringThing
doit êtrevoid
oustring
, pas les deux. Vous devez également inclure<string>
, si vous souhaitez utiliser des chaînes de caractères.Puisque vous voulez à la sortie de la valeur de retour de
stringThing()
dansmain
, je suppose qu'il doit êtreMais alors, vous devez également retourner une chaîne de caractères à partir de votre fonction
par exemple.
Votre paramètre
std::string &teststring
ne fonctionnera pas avec votreconst char*
argument. Donc, soit de la déclarer comme une copie par valeurstring
seulement, ou mieuxconst string&
.void
.Type de retour est funky ...
Qu'est-ce que:
?
Se débarrasser de la première
string
. Votre fonction ne retourne rien.Il suffit de:
Inclusion manquante
Vous aurez aussi besoin de
#include <string>
— dans certains scénarios, vous pouvez obtenir un peu de "chance" et l'ont inclus implicitement par<iostream>
, mais ne comptez pas sur elle.#include <string>
serait une bonne chose à faire, peu importe si c'est inclus dans<iostream>
.