I have a char (ie. byte) buffer that I’m sending over the network. At some point in the future I might want to switch the buffer to a different type like unsigned char or short. I’ve been thinking about doing something like this:
typedef char bufferElementType;
And whenever I do anything with a buffer element I declare it as bufferElementType rather than char. That way I could switch to another type by changing this typedef (of course it wouldn’t be that simple, but it would at least be easy to identify the places that need to be modified… there’ll be a bufferElementType nearby).
Is this a valid / good use of typedef? Is it not worth the trouble? Is it going to give me a headache at some point in the future? Is it going to make maintainance programmers hate me?
I’ve read through When Should I Use Typedef In C++, but no one really covered this.
It is a great (and normal) usage. You have to be careful, though, that, for example, the type you select meet the same signed/unsigned criteria, or that they respond similarly to operators. Then it would be easier to change the type afterwards.
Another option is to use templates to avoid fixing the type till the moment you’re compiling. A class that is defined as:
is able to work with any char type you select, while it responds to all the operators in the same way.