C ++和Visual Studio错误 - 没有合适的转换函数来自&#34; std :: basic_ostream <char,std :: char_traits <char =“”>&gt;&#34; to&#34; int&#34;存在

时间:2016-02-19 21:04:47

标签: c++ visual-studio cout

Visual Studio最近在我身上发疯了,当我所做的只是一个简单的cout时,它给了我这个主题的错误......

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

1 个答案:

答案 0 :(得分:0)

int main{
    cout << "hi";
}

由于可以使用{}语法在C ++中初始化对象,因此您的编译器可能会将此代码解释为尝试创建名为int的全局main变量,并使用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”后面的分号会突出显示,并显示“expected a}”

解决方案:使main成为一个函数:

int main() {
    cout << "hi";
}