错误:声明与'function name'无法比较
Error: Declaration is incomparable with 'function name'
我要做的是将对象(类)传递到函数构造函数中。代码基本上是这样的:
class Primary{
Primary(void);
~Primary(void);
};
//champion.h
//looks like
public:
Champion(void);
Champion::Champion(char name1[], int stringLength, int type1, double health1, int fluid1, double armor1, double specialA1, double damage);
char* getName(void);
double getHealth(void);
int getFluid(void);
double getArmor(void);
double getSpecialA(void);
double getDamage(void);
int type;
void setHealth(double health);
void setFluid(int fluid);
void setArmor(double armor);
void setSpecialA(double specialA);
void setDamage(double physDamage);
void setPrimary(Primary prime1);
//champion is another class
void Champion::setPrimary(Primary prime1)
{
prime = prime1
}
我的大部分代码都在这里http://codepad.org/PMHZNtF9
我得到一个错误,说
错误:声明是不可比较的的空白冠军::setPrimary (') "(在冠军中宣布)"
我不确定这意味着什么,但我知道可以通过参数将类的对象传递到函数中。我做错了什么?为了更清楚一点,我想知道误差是什么意思。据我所知,所有东西都是这样宣布的。看一看,给我一些建议,可能是什么问题,希望我没有一个小的打字错误!
愚蠢的问题,但是这些都在一个文件中吗?如果没有,冠军赛。cpp(或者不管它叫什么)是否有对Primary
类的引用,通过#include "primary.h"
?
如果我做一个快速的重构,到目前为止你所展示的可以编译。我直接看到的是最后一段代码
void Champion::setPrimary(Primary prime1)
{
prime = prime1
}
素数在哪里定义?我现在看到的唯一字段是type,它是一个int类型。
您在这里展示的源代码中没有任何错误,这将导致您提到的错误。在复制粘贴代码的时候,你可能漏掉了一些东西。错误表明在函数Champion::setPrimary
的声明中存在不匹配可能你应该检查它的声明是否与你的代码中的定义完全匹配,否则如果你可以使用codepad并发布你的代码样本,实际上给出了一个错误,我们可以更好地帮助你。
- 在
-
prime
没有在class Champion
中声明。可能因为你复制粘贴了代码,可能这部分被遗漏了。 -
class Primary
将其构造函数声明为Private
,从粘贴在这里的代码中,它不确定这是故意的(没有看到您使用Singleton
)或只是错误。
Champion::setPrimary
中使用的相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- catch框架有没有办法比较流或文件
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 智能指针作为无序映射键,并通过引用进行比较
- 比较if语句中的数组值和int值
- 比较函数模板中的 VARTYPE 和 typeid().name / typename
- 错误:声明与'function name'无法比较