声明与(方法)指针不兼容
declaration is incompatible with (method) - pointers
我最近开始玩c++,但我不明白这意味着什么:
我得到这个错误:
声明与"
void student_system::addStudent(<error-type> z)
"(在第31行声明)不兼容
removeStudent和editStudent 也是如此
我从另一篇stackoverflow帖子中复制了"function()",这似乎很好,并添加了标题,没有任何问题,但我自己的"学生"方法似乎不起作用,我不明白为什么,
我还尝试添加指针而不是变量,但这也不起作用(我所说的指针是指"student")。
#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;
}
将此代码位放入
class student
{
private:
string name, surname, ID;
int sid;
public :
student::student(int sid, string n, string s, string id);
};
之后
#include <vector>
使CCD_ 2及其定义知道它的
在student_system
类定义之上添加class student;
编辑
使用正向声明,我们只能声明方法,其中我们可以使用不完整类型,而不是定义。所以,我的第一个答案是错误的,但下面的代码会起作用。
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)
{
}
1)在发布之前,请将问题简化为最基本的元素。
2) 请不要发布依赖于未提供的include或隐式"using"语句或类似的代码
3) "student"应在student_system之前声明。事实上,您没有得到更多的错误,这让我感到惊讶,但也许您正在做一些在数据库中看不到的事情。h
相关文章:
- 为什么指针不写入类的地址?
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 字符类型转换不兼容
- 我正在尝试将表的地址传递给要在另一个函数中使用的指针,但得到不兼容的指针类型
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 如何警告 C 中 void 指针上的参数不兼容的类型
- 不断增加的指针数组 错误:赋值中的类型不兼容
- 两个不完全相同的函数指针是否兼容
- 不兼容的指针类型警告c
- C++函数指针类型与 Linux 和 VMS 上的候选指针类型不兼容
- 为什么函数指针和数据指针在 C/C++ 中不兼容
- C++指向函数作为参数的指针.数据类型不兼容
- C - 使用类型为 'int 的表达式初始化'int *'的不兼容指针类型
- 声明与(方法)指针不兼容
- 调用指向派生类成员的指针时,指向与对象类型不兼容的成员类型的指针
- 声明不兼容.(指针)
- 在vector中的vector之间移动指针会导致vector迭代器不兼容
- 与指针参数不兼容的无符号字符数组
- 模板和不透明指针是否在继承上不兼容
- 在Apache服务器中设置指令时出现不兼容的指针类型错误