Estoy diseñando una clase Buffer cuyo objetivo es representar una porción de memoria.void * o char * para representación de buffer genérico?
Mi memoria intermedia subyacente es char*
(bueno, boost::shared_array<char>
en realidad, pero en realidad no importa).
estoy atascado en decidir qué prototipo para elegir para mi constructor:
¿Debo ir con:
Buffer(const void* buf, size_t buflen);
O con:
Buffer(const char* buf, size_t buflen);
O algo más?
Lo que se suele hacer, y por qué?
@Luca Matteis: Tengo la intención de proporcionar el intercambio implícito de memoria. Pero eso es bastante fuera de tema. – ereOn
Hay una desafortunada transmogrificación, impulsada por Unicode, en la que 'char' se está convirtiendo en sinónimo de' octet' y tiene poco que ver con 'character'. Esta pregunta es sintomática de ese cambio; He tenido la tentación de 'typedef char octet;' a veces para hacer que el código sea menos engañoso. – msw
@msw: además de la compatibilidad de tipo con literales de cadena, ¿hay alguna razón para usar "char", a diferencia de "char firmado" o "char sin signo"? Me parece un tipo bastante inútil. – supercat