我正在尝试使用#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/