2016-07-01 14 views
-1

に別の変数をキャスト:タイプを保存し、プログラムで、私はの線に沿って何かやってみたい保存タイプ

Type type = int; // or type_of(some_other_variable) 
double variable = 42.0; 
std::cout << (type)variable; 

ことが可能ですか?

EDIT:私が実際にやっていることは、QtスタイルのVariantとVariantMapを作ることです。私の現在のコードです。

#include <string> 
#include <map> 
#include <iostream> 

struct Variant 
{ 
    bool m_bool; 
    int m_int; 
    double m_double; 
    std::string m_string; 

    Variant() {}; 
    Variant(bool bBoolean) { m_bool = bBoolean; } 
    Variant(int iInteger) { m_int = iInteger; } 
    Variant(double dDouble) { m_double = dDouble; } 
    Variant(std::string sString) { m_string = sString; } 
    Variant(const char *_Ptr) { m_string = _Ptr; } 

    operator bool() { return m_bool; } 
    operator int() { return m_int; } 
    operator double() { return m_double; } 
    operator std::string() { return m_string; } 
}; 

typedef std::map<std::string, Variant> VariantMap; 

int main() 
{ 
    VariantMap map; 
    map["bool"] = true; 
    map["int"] = 42; 
    map["double"] = 3.14159265358979323846; 
    map["string"] = "foobar"; 

    std::cout 
     << "bool " << static_cast<bool>(map["bool"]) << std::endl 
     << "int" << static_cast<int>(map["int"]) << std::endl 
     << "double " << static_cast<double>(map["double"]) << std::endl 
     << "string "<< static_cast<std::string>(map["string"]) << std::endl 
     ; 

    system("pause"); 



return 1; 
} 

しかし、その代わりにアクセスが必要な時に明示的に含まれる型にキャストの、私は割り当てのタイプを保存したいのですが、ととアクセスで保存された型に自動キャスト。あなたは(それがユーザーの入力、または何かに依存するため)typeが実行時まで知られていないことを意味している場合

+1

本当にあなたが解決しようとしている問題を教えてください。どのように解決したいのかを私たちに伝えても、十分な情報は得られません。例えば、 '#define type int'はあなたの問題を解決する可能性があります。しかし、あなたの問題とは何の関係もない可能性もあります。あなたの問題が実際にはわからないので、私たちにはわかりません。 –

+0

私はそうしました。一番上の投稿は私のアプリケーションの説明を含むように編集されました。 – rogueyoshi

+0

あなたの実際の質問に答えることはできません。答えがあります。区別された共用体を 'operator <<'オーバーロードで使用してください。 –

答えて

3
using type = int; // or: typedef int type; 
std::cout << static_cast<type>(variable); // prefer static_cast to C-style cast 

さて、その後、何を求めていることはC++では不可能です。

+0

かなり滑らかです。どのようにクラスメンバーとして型を格納することは可能でしょうか? – rogueyoshi

+0

@rogueyoshiは 'using'または' typedef'宣言をクラス定義 – Brian

+0

ああに入れますが、残念なことに再定義することはできません。そこに解決策はありますか? – rogueyoshi

関連する問題