C++で動的型を作成してみた


型推論でなく動的型を作ってみた。

dynamic.hpp
#include<string>
#include<Windows.h>
class Dynamic {
public:

    Dynamic() {
        this->Value = nullptr;
        this->Size = 0
    }

    ~Dynamic()
    {
    }

    template<typename T>
    void set(T value_t)
    {
        this->Size = sizeof(value_t);
        this->Value = (&value_t);
    }

    template<typename T> T get(void) 
    {
        return *((T *)this->Value);
    }

private:
    HANDLE Value;
    size_t Size;
};
main.cpp
include<iostream>

include"dynamic.hpp"

int main(void){
    Dynamic d;
    d.set<char*>("123");
    auto s = d.get<char*>();
    d.set<char>('5');
    auto c = d.get<char>();
    d.set<int>(8);
    auto i = d.get<int>();
    d.set<float>(3.141592);
    std::cout<<i<<endl<<s<<endl<<c<<endl<<d.get<float>()<<endl;//output->"123 \n 5 \n 8 \n 3.141592"
}

今回の反省は難しい型になると途端に使えなくなることでしょうか、あと前に入れた型をわざわざ覚えておかないといけないのでそこが大変だった。型の記録ができる便利なものがあれば教えて頂きたいです。汎用ポインタはできないことがないけどとても危険で簡単にコンピュータ自身を壊してしまうので、JavaやC#のようなObject型があれば少々は安全なのにそれができないのも残念。