'clas_name':尝试在 C++ 中构建宏时不是类或命名空间名称 [已关闭]

问题描述 投票:0回答:1

我有这个宏:

    #define CONCAT_CLSS(clss, mtd) &clss::mtd
    #define EXPORT_X(getter, setter, class_name, arg_name,set,get)                    \
        godot::ClassDB::bind_method(godot::D_METHOD(getter), CONCAT_CLSS(clas_name,get)); \
        godot::ClassDB::bind_method(godot::D_METHOD(setter, arg_name),  CONCAT_CLSS(clas_name,set)); \
        ADD_PROPERTY(godot::PropertyInfo(godot::Variant::FLOAT, arg_name), setter, getter);


//when calling it from : 
void Plaine::_bind_methods()
    {
         
        EXPORT_X("get_gravity","set_gravity", Plaine, "gravity", set_gravity, get_gravity)
    }

这在不同的类中定义:

#define ADD_PROPERTY(m_property, m_setter, m_getter) godot::ClassDB::add_property(get_class_static(), m_property, m_setter, m_getter)

我不明白为什么它会抱怨这里的类名。另外我怎样才能让这个宏更短。

我收到此错误:

plane.cpp
src\plane.cpp(33): error C2653: 'clas_name': is not a class or namespace name

现在,当我调用该类时,该类确实存在。

c++ macros
1个回答
1
投票

错别字:

clas_name
->
class_name

例如:

+ CONCAT_CLSS(class_name,get)
- CONCAT_CLSS(clas_name,get)
© www.soinside.com 2019 - 2024. All rights reserved.