我要做的是将对象(类)传递给函数构造函数。代码基本上如下所示:
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中声明)”
我不确定这意味着什么,但我知道可以通过参数将类的对象传递给函数。我究竟做错了什么?为了更清楚一点,我想知道错误意味着什么。据我所知,一切都是宣称的。看看并给我一些关于可能出现问题的想法,希望我没有一个小错字!
答案 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
内声明。可能因为您复制粘贴代码可能该部分被遗漏了。
class Primary
将其构造函数声明为Private
,从此处粘贴的代码中不确定是故意的(不要看到您使用Singleton
)或只是错误的。