编译 c++ 代码时收到错误

Receiving an error when compiling a c++ code

本文关键字:错误 c++ 代码 编译      更新时间:2023-10-16

我写了这个小程序,但得到一个错误,任何想法可能出错:

网站.h

#include <iostream>
#include <string>
using namespace std;
class Site{
private:
       int ID;
       string Name;
       string Status;
       string RemediationStatus;
       string TypeofContamination;
       int XCoordinate;
       int YCoordinate;  
public:      
       void readSitesFromFile();
       int getSitesCount();
       void showInformationAboutSiteFromFile();
       void addNewSite();
       void showSiteStatus();
       void saveToFile();
       SiteList();
       getSiteList();
};

站点列表.cpp

include <iostream>
#include <string>
#include <fstream>
#include <math.h>
#include "Site.h"
using namespace std;
Site::SiteList()
{
 countForSites=0;
}
Site::Site* getSiteList()
{
    return sites;     
}
//read Sites From File
void Site::readSitesFromFile()
{
   string line;
   ifstream myfile ("sites.csv");//open file sites.csv
   int countofline=0;
    //read from file 
    if (myfile.is_open())
    {
          while (myfile.good())
          {
                getline (myfile,line);//read each lines
                char* cstr = new char [line.size()+1];
                strcpy(cstr, line.c_str());//convert string to char* 
                char* pch= strtok(cstr,",");//split string using delimeter ","
                int count=0;
                while (pch != NULL)
                {
                   //read ID from file sites.csv
                   if(count==0){
                     sites[countForSites].ID=atoi(pch);
                   }
                   //read Name from file sites.csv
                   if(count==1){
                     sites[countForSites].Name=pch;
                   }
                   //read Status from file sites.csv
                   if(count==2){
                     sites[countForSites].Status=pch;
                   }
                   //read RemediationStatus from file sites.csv
                   if(count==3){
                     sites[countForSites].RemediationStatus=pch;
                   }
                   //read TypeofContamination from file sites.csv
                   if(count==4){
                     sites[countForSites].TypeofContamination=pch;
                   }
                   //read XCoordinate from file sites.csv
                   if(count==5){
                     sites[countForSites].XCoordinate=atoi(pch);
                   }
                   //read YCoordinate from file sites.csv
                   if(count==6){
                     sites[countForSites].YCoordinate=atoi(pch);
                   }
                   count++;
                   pch = strtok (NULL, ",");    
               }    
            countForSites++;
        }
         myfile.close();//close file
    }else{
           cout << "Unable to open filenn";
     }
}

当我运行这个程序时,我收到此错误:

./Site.h:22:8: error: C++ requires a type specifier for all declarations
       SiteList();

看起来这条线不起作用:

 Site _SiteList;
        _SiteList.readSitesFromFile();

知道我在这里做错了什么吗?主.cpp

#include <cstdlib>
#include <iostream>
#include "Site.h"
using namespace std;
int main (void)
{
    Site _SiteList;
    _SiteList.readSitesFromFile();

构造函数名称与类名不匹配。 在Site类中,将SiteList更改为Site,然后将站点列表顶部的Site::SiteList更改为Site::Site.cpp

此外,您的getSiteList原型没有返回类型。 它似乎与您的实现Site*,但是您的实现也是错误的。 它应该是:Site* Site::getSiteList()而不是Site::Site* getSiteList()<</p>

div class="answers">我

注意到代码的两件事开始......你的类被称为"Site",但你的默认构造函数是"SiteList()",C字符串库应该定义为

在标头中,您声明了没有返回类型的成员函数

   SiteList();
   getSiteList();

似乎你的意思是Site()而不是SiteList()这个成员函数必须是类构造函数。

此外,似乎函数getSiteList()应该声明为

 Site * getSiteList();

此外,此函数定义不正确。至少它应该定义为

Site * Site::getSiteList()
{
    return sites;     
}

而不是

Site::Site* getSiteList()
{
    return sites;     
}

也没有宣布可变地点。因此,不清楚函数实际返回的内容。