错误:声明与'​​函数名称'无法比较

时间:2011-04-07 03:01:24

标签: c++ function object

我要做的是将对象(类)传递给函数构造函数。代码基本上如下所示:

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(   素数)“(在champion.h中声明)”

我不确定这意味着什么,但我知道可以通过参数将类的对象传递给函数。我究竟做错了什么?为了更清楚一点,我想知道错误意味着什么。据我所知,一切都是宣称的。看看并给我一些关于可能出现问题的想法,希望我没有一个小错字!

2 个答案:

答案 0 :(得分:0)

愚蠢的问题,但这些都在一个档案中吗?如果没有,champion.cpp(或其他任何名称)是否通过Primary引用了#include "primary.h"类?

编辑:

好吧,如果我快速重建,你到目前为止所展示的内容会编译。我看到的一个直接的问题是你在那里的最后一段代码:

void Champion::setPrimary(Primary prime1)
{
   prime = prime1
}

prime 在哪里定义?我现在看到的唯一一个字段是type,它是一个int。

答案 1 :(得分:0)

您在此处显示的源代码中没有任何错误,这将导致您提到的错误。所以可能,你错过了一些东西,同时复制粘贴代码在这里。该错误表明函数声明中存在不匹配Champion::setPrimary可能您应该检查其声明是否与您的代码中的定义完全匹配,否则如果您可以使用codepad并发布您的示例实际上给出错误的代码,我们可以帮助您更好。

上面的代码中有几点需要注意:

    prime内使用的{li> Champion::setPrimary未在class Champion内声明。可能因为您复制粘贴代码可能该部分被遗漏了。
  1. class Primary将其构造函数声明为Private,从此处粘贴的代码中不确定是故意的(不要看到您使用Singleton)或只是错误的。