【发布时间】:2011-10-27 15:18:17
【问题描述】:
这是我的测试用例(注意 WTF 注释):
TEST(string_assignment)
{
std::string str;
std::string cheese="Cheese";
str=cheese;
CHECK_EQUAL(cheese, str);
long lval=0;
str=lval; //WTF - why does the compiler allow this ?
str="";
str.append(cheese);
CHECK_EQUAL(cheese, str);
}
我想捕获 std::string 的实例被分配了其他字符串或 char* 以外的东西。我曾假设编译器会拒绝不兼容的类型,但它允许它。
我怎样才能告诉 gcc(4.4.3 版)拒绝这种愚蠢? ...或者是否有其他方法可以强制拒绝将这些不兼容的类型分配给 std::string ?
【问题讨论】:
-
@0A0D:这里没有区别。
-
对不起,但是不将整数分配给字符串呢?这真的不是你能做的最邪恶的事情,也不能阻止在 C++ 中做。
-
@Christian Rau - 我将其添加到测试用例中,因为我在主项目中更改了变量的类型,并且在编译代码时感到非常惊讶(是的,使用编译器为变量添加书签是有罪的用法)