首页 > 解决方案 > 尽管包装了函数和命名空间 std,但 cout 没有命名类型

问题描述

我收到错误“cout 没有命名类型”(第 36 行,即主函数)以及 main() 中的其他几个错误。

所有代码都很好地包装在函数中,我已经使用过

using namespace std;

但我仍然收到此错误以及其他〜标识符〜未在主函数的此范围错误中声明。

代码:

#include<iostream>
#include<cmath>

using namespace std;

double discriminant (double a, double b, double c){
    return (pow(b,2) - (4 * a * c));
}

double* compute_roots(double a, double b, double c){
    double* x;
    double x1,x2;
    double d = discriminant(a,b,c);
    if (d>0){
        cout<<"Two real roots"<<endl;
    }
    else if (d=0){
        cout<<"One unique solution"<<endl;
    }
    else
        {
        cout<<"Does not support complex roots";
        //throw "Negative roots!";
        return x;
    }
    x1 = (-b + sqrt(d))/(2*a);
    x2 = (-b - sqrt(d))/(2*a);
    x[0] = x1;
    x[1] = x2;
    return x;
}

int main{
    double a=2.0,b=5,c=3.1;
    double* res=compute_roots(a,b,c);
    cout<<res[0];
    cout<<res[1];
    return 0;   
}

错误序列

标签: c++

解决方案


int main{

那应该是

int main() {

否则编译器会认为你正在尝试定义一个名为 的整数变量main,而不是一个函数,并且会被后面的代码弄糊涂。

另外,在使用它的值之前compute_roots永远不要初始化它的局部变量x,这样就行不通了:

double* x;
// ...
return x;

另一个问题:

else if (d=0){

可能应该是d == 0=用于分配,而不是比较)。


推荐阅读