2016-05-02 8 views
-2

私はそれがかなり簡単かもしれないと信じていますが、私はしばらくの間困惑してしまいました。私はC++で簡単なプログラミング言語を書いていますが、私の言語で変数型を扱う最良の方法を理解することはできません。C++スクリプト言語を書くときにクラスの型を扱う方法

たとえば、私は文字列、数字、ブール、テーブルなど8種類の変数タイプを持つことができます!私はこれらをC++内に格納する最良の方法を知る必要があります。なぜなら、それらはすべて異なるタイプであるからです。私は8種類以上の種類があります。コードは、コンパイラを使用した行ベースです。助けてください!

+0

私はちょうど簡単な答えが必要です、それが必要でない限り複雑なものはありません。 –

+1

ようこそ。この質問はここで話題にはなりません。詳細は:[ヘルプ]をご覧ください。これは[programmers.se]に配置するほうがよいでしょう。 –

+4

ここには簡単な答えはありません。複雑なものだけ。 –

答えて

1

一般に、「タイプボクシング」と呼ばれる技術を使用したいと考えています。

enum class ScriptVarType { 
    STRING, 
    NUMBER, 
}; 

struct ScriptVar { 
    ScriptVarType type; 
    union { 
     std::string str; 
     int num; 
    }; 
}; 

すべてのタイプがクラスである場合は、派生クラスをも使用することができます。たとえばPHPは、これらの線に沿って何か(もっとCっぽい)を使用しています。彼らはScriptVar基本クラスを共有することができますし、ScriptVarStringのような実際のタイプを取得するためにRTTI(または同様のもの)を使用することができます。

ユーザ定義可能なタイプは、すべてのユーザパートを定義するメンバを持つ必要があります。

+0

C++でuse unionを使用しないでください。代わりに 'boost :: variant'を使用してください。 –

関連する問題