我卡住了,为什么会出现错误:声明不兼容...
'void A::function(int,int,std::vector<_Ty> *)':在'A'中找不到重载的成员函数 错误 C2061:语法错误:标识符“vector ” 1> 与 1> [ 1> _Ty=点 1> ]
//cpp file
void A::function(int a, int b, vector<B> *p)
{
}
//header file
class B
{
public:
int q;
};
class A
{
public:
void function(int a, int b, vector<B> *p);
};
最佳答案
因为函数头应该完全一样。
//cpp file
void A::function(int a, int b, vector<B>* c) { }
//header file
Class B {
public:
int q;
};
class A {
public:
void function(int a, int b, vector<B> *line);
};
或:
//cpp file
void A::function(int a, int b, vector<B>& c) { }
//header file
Class B {
public:
int q;
};
class A {
public:
void function(int a, int b, vector<B> &line);
};
但是,在第一种情况下调用函数时,如果传递的是对象,应该将*
替换为&
,这样局部指针会得到对象的地址传递的对象。或者手动传递一个指针。
关于c++ - 不兼容的函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339395/