【发布时间】:2011-07-25 17:02:57
【问题描述】:
我有以下枚举:
namespace Country {
enum {
ITALY = 1,
SPAIN = 2
};
}
还有下面的UnitTest++测试:
TEST(something) {
CHECK_EQUAL(Country::SPAIN, object.getCountry(1)); // getCountry returns int
}
这不起作用。我以为Country::SPAIN 会自动转换为int 2,但我得到了这个错误:
error: no matching function for call to ‘CheckEqual(UnitTest::TestResults&, Country::<anonymous enum>, int, UnitTest::TestDetails)’
【问题讨论】:
-
自己将
Country::SPAIN转换为int有问题吗? -
不,它确实有效。我没有考虑过(我是 C++ 新手)。谢谢。无论如何,有没有解释为什么我不能这样做,但我可以做到
int c = Country::SPAIN? -
int c = Country::SPAIN执行隐式转换。我没有用过UnitTest++,所以不知道CheckEqual的实际签名,但我怀疑它是一个模板。
标签: c++ enums unittest++