宏类没有重复

时间:2018-02-08 21:46:46

标签: c++ macros

我使用了很多不同名称的类,但基数总是相同的

例如:

class MyScript : public MyClass
{
    public:
        MyScript() : MyClass("MyScript") { }

    /* My Functions */
};

void Register()
{
    new MyScript();
}

可以创建一个宏,以避免在我的课程中出现重复吗?例如

class MyScript : public MyClass
{
    /* My Functions */
};

void Register()
{
    RegisterScript(MyScript);
}

RegisterScript是有写

的宏
public:
    MyScript() : MyClass("MyScript") { }

感谢您的回答

1 个答案:

答案 0 :(得分:0)

假设您的默认构造函数除了实例化基类之外什么都不做,您可以执行以下操作:

#define RegisterScript(Type) Type() : MyClass(#Type) { }

这是一个带参数的宏的示例,此处的参数是派生类类型。但是,这个宏必须在类里面调用。在课堂外设置构造函数无论如何都没有多大意义。

[GCC]