因此,我正在从事一个小型的业余项目,该项目已经实现了枚举的非常基本的体现。我遇到了一个我正在努力寻找解决方案的问题。
这是我正在寻找的理想电话
<a-entity manager component-a component-b component-c>
第一个参数是一个字符串,该字符串打算附加到变量名上,第二个参数是实际的字符串值
Reflect_Value("TestStringName", "StringValue")
现在宏将采用第一个参数,并用作object_TestStringName,但是当我在代码中传递字符串时,其结果将评估为无法编译的object_“ TestStringName”。
我在这里做错了什么,或者任何人都可以为我如何获得此功能提供任何解决方案。重要的是要使该名称成为我猜可以识别并且也唯一的名称,这样我才能反映出许多对象
谢谢
答案 0 :(得分:3)
我认为您可以使用字符串化运算符template <class T>
T max(T a, T b)
{
cout << "2 ..." <<endl;
return a > b ? a : b;
}
template<>
char* max(char* a, char* b)
{
cout << "1 ..." <<endl;
return strcmp(a, b) > 0 ? a : b;
}
int main()
{
cout << max("Aladdin", "Jasmine") << endl;
return 0;
}
做您想做的事情:
#
然后您将使用不带引号的参数调用宏:
#define Reflect_Value(name,t) \
namespace Reflection { \
static ReflectedObject object_##name = ReflectedObject( #name, #t ); }\
答案 1 :(得分:0)
不传递字符串,而是将其字符串化:
#define stringize(name) #name
#define Reflect_Value(name,t) \
namespace Reflection { \
static ReflectedObject object_##name = ReflectedObject(stringize (name),t); }
然后:
Reflect_Value(TestStringName, "StringValue")