我最近开始使用c ++,但因为我不明白这意味着什么:
我收到此错误:
声明与“
不兼容void student_system::addStudent(<error-type> z)
”(在第31行声明)
同样适用于removeStudent和editStudent
我从另一个stackoverflow帖子复制了“function()”,这看起来很好并添加了标题没有问题,但我自己的“学生”方法似乎不起作用,我不明白为什么,
我也尝试添加指针而不是变量,但这也不起作用(并且通过指针我的意思是“student * x”)。
#include "database.h"
#include <vector>
int main()
{
return 0;
}
class student_system
{
private:
list<student> studList;
public:
student_system();
void addStudent(student x);
void removeStudent(student y);
void editStudent(student z);
void findPos();
void function(int a, int b, vector<int> *p);
};
student_system::student_system()
{
//constructor
}
void student_system::addStudent(student x) // <------------- LINE 31
{
studList.push_back(x);
}
void student_system::removeStudent(student y)
{
/*studList.rem*/
}
void student_system::editStudent(student z)
{
/*get{ return value; }
set{ }*/
}
void student_system::findPos()
{
}
void student_system::function(int a, int b, vector<int> *p)
{
}
class student
{
private:
string name, surname, ID;
int sid;
public :
student::student(int sid, string n, string s, string id);
};
student::student(int sid, string n, string s, string id)
{
(*this).sid = sid;
(*this).name = n;
(*this).surname = s;
(*this).ID = id;
}
答案 0 :(得分:1)
1)请在发布前将问题简化为最基本的元素。
2)请不要发布依赖于未提供的包含或隐含的“使用”声明等的代码
3)“student”应在student_system之前声明。你没有得到更多错误的事实让我感到惊讶,但也许你正在做一些在database.h中看不到的事情。
答案 1 :(得分:1)
把这段代码
class student
{
private:
string name, surname, ID;
int sid;
public :
student::student(int sid, string n, string s, string id);
};
在
之后#include <vector>
这样student_system
及其定义就知道了
答案 2 :(得分:1)
将 class student;
添加到student_system
类定义之上。
修改强>
使用前向声明我们只能声明方法,在这些方法中我们可以使用不完整的类型而不是 define 。所以,我的第一个答案是错误的,但以下代码将起作用。
int main()
{
return 0;
}
// Forward Declaration
class student;
// ================================
// Class student_system
// ================================
class student_system
{
private:
list<student> studList;
public:
student_system();
void addStudent(student x);
void removeStudent(student y);
void editStudent(student z);
void findPos();
void function(int a, int b, vector<int> *p);
};
// ================================
// Class student
// ================================
class student
{
private:
string name, surname, ID;
int sid;
public :
student(int sid, string n, string s, string id);
};
// ================================
// Definition of methods
// ================================
student::student(int sid, string n, string s, string id)
{
(*this).sid = sid;
(*this).name = n;
(*this).surname = s;
(*this).ID = id;
}
student_system::student_system()
{
//constructor
}
void student_system::addStudent(student x)
{
studList.push_back(x);
}
void student_system::removeStudent(student y)
{
/*studList.rem*/
}
void student_system::editStudent(student z)
{
/*get{ return value; }
set{ }*/
}
void student_system::findPos()
{
}
void student_system::function(int a, int b, vector<int> *p)
{
}