То, что вы ищете, уже существует.Это называется char
.Массив char
может использоваться для хранения неизвестных объектов, потому что char
- это, в основном, имя C ++ для байта.Таким образом, для хранения неизвестных или переменных типов объектов в одном массиве вы используете массив байтов, а не массив ничего, который будет void
.
Точка в указателе void
состоит в том, чтомы не знаем на что это указывает.Мы не знаем размер объекта, на который он указывает.Так что void4
не имеет особого смысла.Это больше не «пустота», если мы знаем размер объекта.Единственное, что мы можем сделать с неизвестным объектом - это указать на него.Мы не можем хранить его где-либо, потому что мы не знаем, является ли он объектом POD, и мы не знаем, насколько он велик, или его требования к выравниванию.Поэтому мы, конечно, не храним его в массиве.Все, что мы можем сделать, это создать указатель на него, и у нас уже есть void
указатели для этого.
И, конечно, забавный маленький вопрос:
Что здесь типа T?
void foo(void* p) {
T q = *p;
}
void4
?void32
?Или просто void
?Насколько большим должен быть объект?Что мы знаем об этом?Это тип POD?