我有一个名为Animal
的枚举类作为查找的关键。它在AnimalList.h
enum class Animal{Dog, Cat}; // v1
我得到了一个带有以下接口的DLL AnimalInformation.dll
:
HRESULT GetDescription(Animal animal_key, char* buffer, int& size_in_buffer);
我知道枚举类是枚举的强类型。如果有一天我想添加可用的动物,扩展我的动物枚举类是否安全?
AnimalList.h // v2
enum class Animal{Dog, Cat, Tiger, Lion};
Animal{Dog, Cat, Tiger, Lion}
是否与Animal{Dog, Cat}
匹配?
答案 0 :(得分:0)
在编译期间发生了Typechecking,并且确保具有不同类型的不同函数的名称修改具有不同的名称,这些名称基于类的基类型和名称,因此应为这两个示例指定相同的名称。
但是,您必须应对的是GetDescription(Animal animal_key, char* buffer, int& size_in_buffer)
无法了解Tiger
和Lion
,并将ERR_ANIMAL_UNKNOWN
返回给用户代码正在尝试使用它,如果你有不匹配的DLL。哪个不太好。这当然是任何枚举的问题,任何获取用户数据和某些值的DLL都会被识别而其他值则不会被识别。