Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用宏定义字段,但字段不能具有类型';无效';和/或预期的';)';_C++_Unreal Engine4_Unreal Gameplay Ability System - Fatal编程技术网

C++ 使用宏定义字段,但字段不能具有类型';无效';和/或预期的';)';

C++ 使用宏定义字段,但字段不能具有类型';无效';和/或预期的';)';,c++,unreal-engine4,unreal-gameplay-ability-system,C++,Unreal Engine4,Unreal Gameplay Ability System,试图简化锅炉板的编写,但我得到的字段不能有类型“void”和/或Expected')” C++ C++,我看到了一堆问题,但仍然无法解决。这些错误对我来说仍然太神秘了,我无法用谷歌搜索它们 #定义游戏统计(统计)\ Upperty(BlueprintReadOnly,Category=“Stats”,ReplicatedUsing=OnRep###Stat#)\ FGameplayAttributeData##Stat##\ 游戏统计访问(UGameStats,统计)\ UFUNCTION()

试图简化锅炉板的编写,但我得到的
字段不能有类型“void”
和/或
Expected')”

C++ C++,我看到了一堆问题,但仍然无法解决。这些错误对我来说仍然太神秘了,我无法用谷歌搜索它们

#定义游戏统计(统计)\
Upperty(BlueprintReadOnly,Category=“Stats”,ReplicatedUsing=OnRep###Stat#)\
FGameplayAttributeData##Stat##\
游戏统计访问(UGameStats,统计)\
UFUNCTION()\
虚拟空对rep##############(const FGameplayAttributeData&Old###Stat###);
游戏统计(“健康”)
我想用单词“Health”而不是“Stat”来生成代码

谢谢

##
用于将令牌粘贴在一起,但您似乎认为这是“反向字符串化”。
它也是一个二进制运算符,而不是“around ary”运算符

就是

#define hello(x) Hello_##x
hello(World)
将产生

Hello_World
这应该是可行的(但完全未经测试):


请在问题>代码> GAMESTSTAT(健康)< /C>中检查错误信息?检查预编码程序中的“<代码> > <代码> >和>代码> <代码> >代码,您将找到解决方案。这将不起作用,因为虚构的头工具在C++预处理器之前运行。实际上没有任何直接等价的东西。我认为您可能想要做的是创建一个stat组件,它拥有一个stat数据数组,可能是一个包含stat名称和相关FGameplayAttributeData的结构。如果您想为OnRep函数注入独特的行为,那么您可以创建一个UStatBase类,并为其提供一个虚拟OnRep函数(而不是一个结构数组,您将拥有一个UStatBase*数组)。谢谢。让我玩一下这个,我会回到mark accepted。谢谢你的回答,不幸的是它似乎不适用于虚幻引擎-VAR现在在源代码中声明正确,但在Engine>中不可见(但我想这是另一个问题,所以谢谢你回答这个问题!干杯
#define GAME_STAT(Stat) \
    UPROPERTY(BlueprintReadOnly, Category = "Stats", ReplicatedUsing = OnRep_##Stat) \
    FGameplayAttributeData Stat; \
    GAME_STAT_ACCESS(UGameStats, Stat); \
    UFUNCTION() \
    virtual void OnRep_##Stat(const FGameplayAttributeData& Old##Stat);
    
GAME_STAT(Health)