rubricanis
Homo ludens
Bei folgendem schnalle ich z.Z. ein wenig ab und komme nicht weiter. In einem Lexer sammle ich die Tokens in einem std::vector und die sollen mit token.emplace_back(...) hinzugefügt werden. Dazu brauch ich aber - wenn ich mich nicht täusche - für Token und die union Token::Value eine Constructor den ich einfach nicht hinbekomme.Könnt ihr mir sagen wie man so etwas macht oder ist die Idee einfach daneben ?
Klar könnt eich das auch einfach mit token.push_back() machen und dann die Werte einzeln eintragen. Aber warum einfach wenn es auch kompliziert geht, das ist ja schließlich C++ und dessen Möglichkeiten sollen doch genutzt werden, oder ? 
tia, Peter
Code:
struct Token {
enum class Type {
symbol,
integer,
decimal,
string,
....
};
struct Value{
// Constructor ???
Value(Type t, ??? ): type(t), ??? {}
Type type;
union {
std::string s;
int i;
...
};
};
// Constructor ???
Token(int _line,int _token, Value val){}
// values
int line;
int pos;
Value value;
};
// the lexer
class Lexer {
std::vector<Token> token;
public:
void scan(std::string path){
.... // the hard work
token.emplace_back(line, pos, value)
}
};

tia, Peter

