c++ - 不兼容的函数声明

标签 c++ parameters

我卡住了,为什么会出现错误:声明不兼容...

'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/

相关文章:

c++ - 通过引用传递的字符串流的奇怪行为

c++ - std::chrono::duration_cast 1 秒和 2 秒的奇怪结果

c++ - 通过模板或纯虚拟基类继承进行动态类型文件访问?

c++ - Boost::互斥锁和 Malloc

php - 绑定(bind)后如何以字符串形式检索 MySql 语句?

parameters - Lisp:为什么说我只给我的函数一个参数?

matlab - 在MATLAB中具有可变数量参数的SQLite语句

c++ - 我可以在运行时初始化 static float 变量吗?

android - 如何将参数从 Activity 传递到服务......当用户停止服务时

android - WindowManager.LayoutParams 构造函数参数的顺序和含义是什么?