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)
谢谢 !!
您的宏为空,默认情况下它不会继续到下一行,除非您\
在最后使用a ,例如
#define #define LANG( cName, lName ) \
class cName \
{ \
...
Run Code Online (Sandbox Code Playgroud)