我有一个类A,它有两个实际上被重载的方法foo。该类有点看起来像这样在C++中模糊FunctionOverloading?
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上的错误而不是警告。
该代码不会编译;请显示您的实际代码。 –