编译 c++ 代码时收到错误
Receiving an error when compiling a c++ code
我写了这个小程序,但得到一个错误,任何想法可能出错:
网站.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>
注意到代码的两件事开始......你的类被称为"Site",但你的默认构造函数是"SiteList()",C字符串库应该定义为
在标头中,您声明了没有返回类型的成员函数
SiteList();
getSiteList();
似乎你的意思是Site()
而不是SiteList()
这个成员函数必须是类构造函数。
此外,似乎函数getSiteList()
应该声明为
Site * getSiteList();
此外,此函数定义不正确。至少它应该定义为
Site * Site::getSiteList()
{
return sites;
}
而不是
Site::Site* getSiteList()
{
return sites;
}
也没有宣布可变地点。因此,不清楚函数实际返回的内容。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'