2016-02-19 266 views
0

最近Visual Studio對我感到瘋狂,並且給了我錯誤對象時我所做的只是一個簡單的cout ......C++和Visual Studio錯誤 - 從「std :: basic_ostream <char,std :: char_traits <char>>」到「int」沒有合適的轉換函數

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

而且,標示後「喜」的分號,並說:「預期}」 ...... – MoonriseWarrior

+3

你缺少一個參數列表'()''爲main',它得到(語法無效)[列表初始化](http://en.cppreference.com/w/cpp/language/list_initialization)作爲「int」類型的變量處理。 – LogicStuff

+1

* Visual Studio最近對我很瘋狂*它可能需要它的藥物:) –

回答

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

由於初始化在C對象++與{} SY的可能性ntax,您的編譯器可能會將此代碼解釋爲嘗試創建一個名爲main的全局變量int,該變量的初始值爲std::ostream::operator<<,該成員函數返回對std::ostream本身的引用。

這是因爲如果你這樣寫:

double some_variable { cout << "hi" } 

或者:

double some_variable { cout } 

std::ostream實際上是std::basic_ostream<char, std::char_traits<char>>。並且該類型與int不兼容。

唯一奇怪的是爲什麼"hi"之後的;不會立即導致編譯器停止嘗試;但是你不會說哪個編譯器版本和你正在使用的選項。

在任何情況下,所有這些事實終於導致錯誤消息:

no suitable conversion function from 「std::basic_ostream<char, 
    std::char_traits<char>>」 to 「int」 exists 

和在:

此外,分號之後的 「hi」 被突出顯示,並說「預計a」)

解決方法:使main功能:

int main() { 
    cout << "hi"; 
} 
相關問題