int main{
cout << "hi";
}
en raison de la possibilité d'objets initialisant en C++ avec le {}
sy ntax, votre compilateur interprète probablement ce code comme une tentative de créer une variable globale int
appelée main
, initialisée avec le résultat de std::ostream::operator<<
, une fonction membre qui retourne une référence au std::ostream
lui-même.
Il est comme si vous aviez écrit:
double some_variable { cout << "hi" }
Ou:
double some_variable { cout }
std::ostream
est en fait std::basic_ostream<char, std::char_traits<char>>
. Et ce type n'est pas compatible avec int
. La seule chose qui est étrange est pourquoi le ;
après "hi"
ne provoque pas immédiatement l'arrêt du compilateur; mais vous ne dites pas quelle version du compilateur et quelles options vous utilisez.
Dans tous les cas, tous ces faits ont pour résultat final dans le message d'erreur:
no suitable conversion function from “std::basic_ostream<char,
std::char_traits<char>>” to “int” exists
et:
En outre, le point-virgule après "salut" est mis en surbrillance, et dit "attendu a}"
Solution: make main
fonction:
int main() {
cout << "hi";
}
En outre, le point-virgule après « salut » est mis en évidence, et dit « attendre un} » ... – MoonriseWarrior
vous manque une liste de paramètres '()' 'pour main', il obtient traité comme (syntaxiquement invalide) [initialisation de liste] (http://en.cppreference.com/w/cpp/language/list_initialization) pour une variable de type 'int'. – LogicStuff
* Visual Studio devient fou sur moi récemment * Il a probablement besoin de ses médicaments :) –