次のコードは、コンストラクタでキャストが行われているにもかかわらず、voidポインタを参照できないため、コンパイルされません。このコードをコンパイルするか、型の安全性を無効にするにはどうしてですか?コンストラクタでvoid *をキャストして値にアクセスする
#include "stdafx.h"
#include <iostream>
using namespace std;
IntWrapper(int _value) : value{ nullptr }
{
value = new int(_value);
value = static_cast<int*>(value);
}
int main()
{
IntWrapper* foo = new IntWrapper(10);
cout << *foo->value;
cin.get();
return 0;
}
私はこのコードは、コンソールアプリケーションである一方で、それは非現実的なエンジンで書かれているコードのテストとして意図されていることに注意すべきです。このため、クラステンプレートを使用して必要な機能を実現することはできません。
なぜボイドポインタを使用しているのですか? –
固定数の型(int、float、doubleなど)にすることができ、テンプレートを使用できないクラスが必要です。これは、Unrealでこれをテストするのが苦痛なので、クラスの簡略版です。私はラッパーの中に複数の型を定義することでこれを実現できると思っています。 – InvertedIdeals
おそらく '組合 'ですか? –