C++ 不兼容函数声明
我被卡住了,为什么会出现错误:声明不兼容 'void A::function(int,int,std::vector*)':在'A'中找不到重载成员函数 错误C2061:语法错误:标识符“vector” 1> 与 1> [ 1> _Ty=点 1> ]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
//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*)
。