c++ - 通过#define 宏创建自定义类

标签 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;
};

所以我想知道如果我想把define的“lName”参数当作一个std::string对象应该怎么做。现在(在“HERE !!!!”行)我得到错误:

Error: Identifier "lName" is undefined

知道我想做的事情是否可行吗?

为了给您一些背景信息,我正在做一个自定义的多语言阅读器。所以我可以通过做类似的事情来简单地定义新语言:

LANG( Cpp, "cpp" )
LANG( Perl, "pl" )

谢谢!!

最佳答案

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

#define #define LANG( cName, lName ) \
class cName \
{ \
    ...

关于c++ - 通过#define 宏创建自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567052/

相关文章:

c++ - 用给定范围内的随机浮点值填充矩阵的特征矩阵库

c++ - 错误 : operand of '*' must be a pointer

programming-languages - 使困惑。 OO 本质上是命令式的还是多范式?

F# 元编程 : is it possible to make IF X = 1 OR 2 syntax?

programming-languages - 谁决定将哪些功能纳入语言?

c++ - 随机数生成的问题

c++ - 你如何根据按钮的按下来逐渐加速一个物体(Ogre3D)?

c++ - opencv轮廓去除

oop - 您认为函数式语言适合具有大量业务规则但计算量很少的应用程序吗?

c++ - 编译成 C/C++ 源代码的编程语言?