2011-04-07 43 views
0

我想要做的是將對象(類)傳遞給函數構造函數。該代碼基本上是這樣的:錯誤:聲明與'​​函數名'無法比較

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

我得到那個說

Error: Declaration is incomparable with 'void Champion::setPrimary( prime)" (declared in champion.h)"

我不知道這意味着什麼錯誤,但是我知道這是可能通過參數將類的對象傳遞給函數。我究竟做錯了什麼?要更清楚一點我想知道錯誤的含義。就我所瞭解的一切而言。看看並給我一些關於什麼可能是問題的想法,並希望我沒有一個小的錯字!

+0

你能告訴我們該方法的聲明嗎? – Bernhard 2011-04-07 03:04:23

+0

也許你應該檢查如何在champion.h中聲明setPrimary()。 – RollingBoy 2011-04-07 03:05:09

+0

說到錯字,你的標題在過去的6年裏是不正確的。另外,請不要完全外化你的代碼,否則你的問題就像StackOverflow的外觀一樣變成_incomplete_。 – 2017-12-29 06:38:17

回答

0

愚蠢的問題,但這些都在一個文件?如果沒有,champion.cpp(或其他所謂的)是否通過#include "primary.h"參照Primary類?

編輯:

好吧,你已經證明到目前爲止,如果我做一個快速的重建編譯。我看到一個眼前的事情是在代碼的最後一塊你有:

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

凡被定義黃金?我現在看到的唯一字段是type,它是一個int。

+0

他們在單獨的文件中,並且是的我通過#include「Primary.h」獲得了對Primary類的引用 – Zieklecknerizer 2011-04-07 03:23:25

0

您在此處顯示的源代碼沒有任何錯誤,它會給出您提到的錯誤。所以可能,你錯過了一些東西,而在這裏複製粘貼代碼。錯誤表明函數Champion::setPrimary的聲明中存在錯誤匹配可能yo應該檢查它的聲明是否與您的代碼中的定義完全匹配,否則如果您可以使用codepad併發布代碼實際上給出錯誤的示例,我們可以幫助你更好。

有在上面的代碼需要注意的幾點:

  1. prime正在使用的Champion::setPrimaryclass Champion內沒有聲明。可能因爲你複製粘貼代碼,也許這部分被遺漏了。
  2. class Primary聲明其構造函數爲Private,從這裏粘貼的代碼中不確定是故意的(沒有看到你使用Singleton)或者只是錯誤。