使用宏定义字段,但字段不能具有类型 'void' and/or 应为 ')'
Define field with macro, but Field cannot have type 'void' and/or Expected ')'
试图简化编写样板,但我得到 Field cannot have type 'void'
和/或 Expected ')'
新手c++,看到一堆这样的问题,还是想不通。这些错误对我来说仍然太神秘,无法 google 它们..
#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")
我想生成包含单词“Health”而不是替代“Stat”的代码
谢谢!
##
是用来粘贴token的,不过貌似你以为是“反串化”。
它也是一个二元运算符,而不是“around-ary”运算符。
即
#define hello(x) Hello_##x
hello(World)
会产生
Hello_World
这应该可行(但完全未经测试):
#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)
试图简化编写样板,但我得到 Field cannot have type 'void'
和/或 Expected ')'
新手c++,看到一堆这样的问题,还是想不通。这些错误对我来说仍然太神秘,无法 google 它们..
#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")
我想生成包含单词“Health”而不是替代“Stat”的代码
谢谢!
##
是用来粘贴token的,不过貌似你以为是“反串化”。
它也是一个二元运算符,而不是“around-ary”运算符。
即
#define hello(x) Hello_##x
hello(World)
会产生
Hello_World
这应该可行(但完全未经测试):
#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)