通过#define宏创建自定义类

The*_*777 1 c++ programming-languages

我正在尝试使用#define创建一个宏,它允许我按需创建新类.这是我的代码:

#pragma once

#include "PDDefFileReader.h"

#define SET_LANG( lang ) *( new std::string( lang ) ) 

#define LANG( cName, lName )
class cName
{
public:
    cName()
    {
        _langName = SET_LANG( lName );                 <- HERE !!!!
        _reader = new PDDefFileReader( _langName );
    }
    ~cName(){}

    std::string Str(){ return _langName; }

private:
    PDDefFileReader* _reader;
    std::string _langName;
};
Run Code Online (Sandbox Code Playgroud)

所以我想知道如果我想将define的"lName"参数作为std :: string对象,我应该怎么做.现在(在"HERE !!!!"行)我收到错误:

Error: Identifier "lName" is undefined
Run Code Online (Sandbox Code Playgroud)

知道我想做什么是可能的吗?

为了给你一些背景,我正在做一个自定义的多语言阅读器.所以我可以通过以下方式简单地定义新语言:

LANG( Cpp, "cpp" )
LANG( Perl, "pl" )
Run Code Online (Sandbox Code Playgroud)

谢谢 !!

Dir*_*irk 5

您的宏为空,默认情况下它不会继续到下一行,除非您\在最后使用a ,例如

#define #define LANG( cName, lName ) \
class cName \
{ \
    ...
Run Code Online (Sandbox Code Playgroud)