C++ 错误:在“(”标记之前需要构造函数、析构函数或类型转换

C++ 错误:在“(”标记之前需要构造函数、析构函数或类型转换,c++,C++,我查看了其他线程,但似乎没有任何线程对我有帮助。我收到以下错误消息: Corpus.cpp:在全局范围内: Corpus.cpp:12:15:错误:在“”标记之前需要构造函数、析构函数或类型转换 这里是Corpus.cpp #include <stdio.h> #include "Corpus.h" #include <fstream> double prop[26]; Corpus::Corpus() : prop {0.09, 0.02, 0.02, 0.04,

我查看了其他线程,但似乎没有任何线程对我有帮助。我收到以下错误消息:

Corpus.cpp:在全局范围内: Corpus.cpp:12:15:错误:在“”标记之前需要构造函数、析构函数或类型转换

这里是Corpus.cpp

#include <stdio.h>
#include "Corpus.h"
#include <fstream>

double prop[26];

Corpus::Corpus() : prop {0.09, 0.02, 0.02, 0.04, 0.12, 0.02, 0.03, 0.02, 0.09, 001, 0.01, 0.04,
            0.02, 0.06, 0.08, 0.02, 0.01, 0.06, 0.04, 0.06, 0.04, 0.02, 0.02, 0.01, 0.02, 0.01}
{
}

Corpus::Corpus(fstream f) {
    Scanner scan = new Scanner(f);
    int i=0;
    while(scan.hasNext() && i<26) {
            prop[i++] = scan.nextInt();
    }
}

char Corpus::proportion(char c) {
    int i = c=97;
    return prop[i];
}
这是语料库

#ifndef CORPUS_H
#define CORPUS_H
#include <stdio.h>
#include <fstream>
class Corpus {
public:
    double prop[26];
    Corpus();
    Corpus(std::fstream f);
    char proportion(char c);
};

#endif

第一个错误,即导致该错误消息的错误,是

Corpus::Corpus(fstream f) {
应该是:

Corpus::Corpus(std::fstream f) {
在错误消息中,它说Corpus.cpp:12:15:;12是行号,15是该行中的字符号;因此,这正好指向fstream中的f,这正是问题所在


<>但是,一旦固定了,那么更多的错误就会出现。扫描仪扫描=新的扫描器;是一个错误。扫描器没有被定义在任何地方,但是即使它不是java。创建对象的C++方式是扫描仪扫描{F}。;.

对错误所在的代码进行注释。我们在错误中有行号,但代码中没有行号:p.用于编辑问题。否则,请尽力发布问题中的所有信息并正确格式化。KudosIt称为std::fstream。您需要在构造函数定义中使用正确的名称。小心!在prop的init中有一个001。这是八进制1。也许你的意思是0.01。这里有一个越界错误:char Corpus::proportionchar c{int i=c=97;return prop[i];}全局变量double prop[26];是危险的,因为很容易将对该变量的访问与对类成员属性的访问混为一谈。建议重命名它,或者在不使用它的情况下删除它。