我有一个 A 类,它有两个方法 foo 实际上是重载的。这个类有点像这样
class A
{
public:
bool foo(int& a);
bool foo(size_t& a);
};
bool A::foo(int& a)
{
return true;
}
bool A::foo(size_t& a)
{
int new_a = a;
return foo(new_a); // here Cl throws me warning C4717: 'hweudm::UDMAbstractBaseEntity::SetAttribute' : recursive on all control paths, function will cause runtime stack overflow
}
int main()
{
A aObj;
size_t val = 12;
aObj.foo(val);
return 0;
}
从代码来看,它看起来并不模棱两可。但我不想在编译期间出现这个警告。谁能告诉我
- 为什么即使我已将 size_t 类型转换为 int 也会收到此警告?
- 这是否会是错误而不是 GCC 的警告。