2012-01-10 94 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