I am somewhat familiar with type safety, and have used it successfully before in methods which receive several parameters of the same type (bool) to avoid confusion. For example:
// Old version of the method
void sendPackage(bool sendImmediately, bool dividePacket);
// Type safe version
enum SendImmediatelyPreference
{
SEND_IMMEDIATELY,
DO_NOT_SEND_IMMEDIATELY
};
enum PacketDivisionPreference
{
DIVIDE_PACKET,
DO_NOT_DIVIDE_PACKET
};
void sendPackage(
SendImmediateltPreference immediatePref,
PacketDivisionPreference divisionPref);
So the cryptic sendPackage(true, false)
becomes sendPackage(SEND_IMMEDIATELY, DO_NOT_DIVIDE_PACKET)
.
The problem is that this is only an option for bool
. I have a method that accepts several std::vector<std::string>
and I'd like to minimise the posibility of the user inputting the arguments in the wrong order.
I can think of creating different classes which contains an std::vector<std::string>
and either override tons of the std::vector
methods or expose the internal vector.
Is there an easier way, some sort of typedef which enforces type safety? Using boost
would be okay.
Aucun commentaire:
Enregistrer un commentaire