2016-02-19 1 views
0

Visual Studio est devenu fou sur moi récemment, et me donne l'erreur dans le sujet quand je l'ai fait était simple ... coutErreur C++ et Visual Studio - pas de fonction de conversion appropriée de "std :: basic_ostream <char, std :: char_traits <char>>" à "int" existe

CODE:

// Lang.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 

int main{ 
    cout << "hi"; 
} 
+0

En outre, le point-virgule après « salut » est mis en évidence, et dit « attendre un} » ... – MoonriseWarrior

+3

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

+1

* Visual Studio devient fou sur moi récemment * Il a probablement besoin de ses médicaments :) –

Répondre

0
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"; 
}