2012-01-10 91 views
1

這裏是原型:虛空參數類型導致缺少類型錯誤

void RecvProxy_ToggleSights(const CRecvProxyData* pData, void* pStruct, void* pOut); 

然後本身的功能:

void RecvProxy_ToggleSights(const CRecvProxyData* pData, void* pStruct, void* pOut){ 

CBaseCombatWeapon *pWeapon = (CBaseCombatWeapon*)pStruct; 
if(pData->m_Value.m_Int) 
    pWeapon->EnableIronsights(); 
else 
    pWeapon->DisableIronsights();} 

然後錯誤消息的代碼,無論是原型和定義,生成:

錯誤19錯誤C4430:缺少類型說明符 - int假定。注意:C++不支持default-int f:\ Mods \ CI Testbed \ src \ game \ shared \ basecombatweapon_shared.cpp 47

如何解決此錯誤?

+0

文件'basecombatweapon_shared.cpp'正在使用一些未定義的類型。這可能是因爲你弄亂了#include依賴關係(即錯過了一些或錯誤的順序)。 – 2012-01-10 03:08:05

+0

給出的代碼很好(並且void *是完全有效的)。你確定它不是另一個函數,宏是在你的代碼中添加行嗎?此外,請仔細查看以確保所有功能都具有返回值。 – slugonamission 2012-01-10 03:08:18

+0

哪一行是行47?是否有可能沒有正確#包括你在這裏使用的一種類型? – 2012-01-10 03:09:13

回答

1

是否定義了'CRecvProxyData'類型?你的代碼是正確的(假設所有用戶定義的類型都被正確定義),儘管我建議你在它們自己的行上放置函數定義的開始和結束括號。

而且,我再跟無效*:這是一個有點自C宿醉的,你的目標應該是從你的源代碼消除它在必要時。你可以使用多態或模板嗎?

這很可能是你錯過了一個#include,或者在你的包含衛兵中犯了一個錯誤。如果您可以發佈定義了'CRecvProxyData'的文件管理器的內容以及圍繞您發佈的代碼的代碼,那將非常有幫助。否則,我只能推測:)。

+0

這裏是定義CRecvProxyData的地方:// //這被傳遞給RecvProxy函數。 class CRecvProxyData { public: \t const RecvProp \t * m_pRecvProp; \t \t //它正在接收的財產。 \t DVariant \t \t m_Value; \t \t \t //給予您存儲的值。 \t int \t \t \t \t m_iElement; \t \t \t //你正在獲取哪個數組元素。 \t int \t \t \t \t m_ObjectID; \t \t \t //被引用的對象。 };'我也會發佈一個pastbin鏈接到原始代碼來自cpp文件的實體。 – Geowil 2012-01-10 03:47:18

+0

http://pastebin.com/GubdCYUG有整個cpp文件的pastebin鏈接。 – Geowil 2012-01-10 03:51:23

+2

它看起來像(CRecvProxyData)的定義來自'dt_recv。h',但是這個頭文件不包含在你的源代碼中。 – DRH 2012-01-10 06:35:49