疑問に思っていたのは、ポインターではない void データ型が存在できないのはなぜですか?
確かに、決定されたサイズ全体を乗り越えることができます
void4
void8
void32
そして、そのサイズがクラスのサイズ以下である場合にのみ、void データ型を別のクラスに「キャスト」することが許可されます。
私が見逃しているものはありますか、それとも C++ 委員会はそれを悪い習慣と見なしているだけですか?
編集:
私は自分自身をあまりよく説明していないので、その使用例を示します。
main()
{
/*
Lets make a list of unknown elements
std::string is 8 bytes, and float is 4
bytes, so we'll reserve 8 byte sequences
*/
vector<void8> elements;
elements.push_back((void8) string("First string element"));
elements.push_back((void8) float(5.76) );
elements.push_back((void8) string("Third string element"));
// Ect.
cout << (string) elements[0];
cout << (float) elements[1];
cout << (string) elements[2];
cout << (float) elements[2]; // Garbage
void1 data;
data = (void1) bool(1);
data = (void1) unsigned int(80094); // Error, not enough size
}
void ポインターと同様に、現在格納されている型がわからないため、void という名前が付けられています。