Erstellen einer benutzerdefinierten Klasse, die durch #define-makro

Ich versuche ein makro zu erstellen mit #define, das wird mir erlauben, erstellen Sie die neue Klasse auf Nachfrage. Hier ist mein code:

#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;
};

So, ich will wissen, wie sollte ich es tun, wenn ich will, dass die "lName" - parameter die definieren wie ein std::string-Objekt. Jetzt (bei der Zeile "HIER !!!!") Ich bekomme die Fehlermeldung:

Error: Identifier "lName" is undefined

Jede Idee, wenn das, was ich will zu tun ist, möglich ?

Ihnen einige Kontext, ich bin dabei ein custom-multi-language-reader. Also ich könnte einfach definieren, neue Sprache, indem er etwas wie:

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

Dank !!

  • -1 nur verwenden, boiler-plate-Makros eingefügt werden, die von deiner IDE nicht von Ihrem compiler Präprozessor
  • Warum bist du nicht mit Vorlagen für diese ?
  • Wenn diese Klassen unterscheiden sich nur in einem string-variable,, warum haben mehrere Klassen? Warum nicht eine Klasse mit einem Konstruktor, der ein string-argument?
  • *( new std::string( lang ) ) ist ein Speicher-Leck. Sie wollen einfach nur _langName = lName oder noch besser _langName(lName) im initialiser Liste.
Schreibe einen Kommentar