Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不兼容函数声明_C++_Parameters - Fatal编程技术网

C++ 不兼容函数声明

C++ 不兼容函数声明,c++,parameters,C++,Parameters,我被卡住了,为什么会出现错误:声明不兼容 'void A::function(int,int,std::vector*)':在'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

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

'void A::function(int,int,std::vector*)':在'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文件
void A::函数(int A,int b,vector*p)
{    
}
//头文件
B类
{
公众:
int-q;
};
甲级
{     
公众:
空洞函数(inta,intb,向量*p);
};
问题

void函数(inta,intb,向量*line)
无效函数(inta、intb、向量和线)是两个不同的签名(函数原型)

更重要的是,C++中没有这样的关键字<代码>类< /代码>。< /p> 问题!!!p>
void函数(inta,intb,向量*line)
无效函数(inta、intb、向量和线)是两个不同的签名(函数原型)


更重要的是,C++中没有这样的关键字<代码>类< /> > .< /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文件
void A::函数(inta,intb,向量*c){}
//头文件
B类{
公众:
int-q;
}; 
甲级{
公众:
空洞函数(inta,intb,向量*线);
}; 
或:

//cpp文件
void A::函数(inta,intb,vector&c){}
//头文件
B类{
公众:
int-q;
};
甲级{
公众:
空洞函数(inta,intb,向量和线);
}; 

但是,在第一种情况下调用函数时,如果传递对象,则应将
*
替换为
&
,这样本地指针将获得传递对象的地址。或者手动传递指针。

这是因为函数的头应该完全相同

//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文件
void A::函数(inta,intb,向量*c){}
//头文件
B类{
公众:
int-q;
}; 
甲级{
公众:
空洞函数(inta,intb,向量*线);
}; 
或:

//cpp文件
void A::函数(inta,intb,vector&c){}
//头文件
B类{
公众:
int-q;
};
甲级{
公众:
空洞函数(inta,intb,向量和线);
}; 

但是,在第一种情况下调用函数时,如果传递对象,则应将
*
替换为
&
,这样本地指针将获得传递对象的地址。或者手动传递指针。

首先,在
B
末尾缺少分号。此外,您正在使用
Class
而不是
Class

对于签名本身,您的声明(在头文件中)采用指向
向量的指针,而您的定义(在
.cpp
文件中)采用引用

//cpp file
void A::function(int a, int b, vector<B>& c) // // Arguments are an int, an int, and a vector<B> reference.
{    

}

//header file

class B
{
public:
     int q;
};

class A
{     
public:    
     void function(int a, int b, vector<B>& line);
        // Same arguments.
};
//cpp文件
void A::function(inta、intb、vector&c)///参数是int、int和向量引用。
{    
}
//头文件
B类
{
公众:
int-q;
};
甲级
{     
公众:
空洞函数(inta,intb,向量和线);
//同样的论点。
};

首先,在
B
的末尾缺少一个分号。此外,您正在使用
Class
而不是
Class

对于签名本身,您的声明(在头文件中)采用指向
向量的指针,而您的定义(在
.cpp
文件中)采用引用

//cpp file
void A::function(int a, int b, vector<B>& c) // // Arguments are an int, an int, and a vector<B> reference.
{    

}

//header file

class B
{
public:
     int q;
};

class A
{     
public:    
     void function(int a, int b, vector<B>& line);
        // Same arguments.
};
//cpp文件
void A::function(inta、intb、vector&c)///参数是int、int和向量引用。
{    
}
//头文件
B类
{
公众:
int-q;
};
甲级
{     
公众:
空洞函数(inta,intb,向量和线);
//同样的论点。
};

如果不是那愚蠢的验证码,我会是第一个。如果不是那愚蠢的验证码,我会是第一个。调用现在与原型相同,但仍然有一个错误。你能在cpp文件中发布
A::function
取消认证吗?为什么会有B类?编辑:该函数受保护添加
#include
。正如sad_man所说,添加
#include
,然后使用命名空间std添加
到头文件。另外,您可能已经在某个地方编写了
void A::function(int,int,std::vector*)
,而不是
void A::function(int,int,std::vector*)
。调用现在与原型相同,但仍然存在错误。您可以在cpp文件中发布
A::function
偏差吗?为什么会有B类?编辑:该函数受保护添加
#include
。正如sad_man所说,添加
#include
,然后使用命名空间std添加
到头文件。另外,您可能在某个地方编写了
void A::function(int,int,std::vector*)
,而不是
void A::function(int,int,std::vector*)