在创建Matrix类以便轻松地多维访问数组时,我偶然发现了一个奇怪的错误:如果为()运算符创建多个重载,Visual Studio C++优化程序(2010年和2012年)崩溃。Error在C++模板类中重载()运算符
我设法隔离错误。在一个项目中把这个作为单一代码文件将使它崩溃:
template <class T>
class Foo
{
T& Foo::operator() (int i)
{
return 0;
}
// C1001 - Commenting this second overload makes the compiler work correctly
T& Foo::operator() (char c)
{
return 0;
}
};
原代码必须与(INT X,int y)对过载,而另一个与(Vector2 POS),但错误的是相同。
有没有解决方法,或者它是一个VS错误,我将不得不忍受?
可能是因为类型有效一样对待?由于'char'被传递给函数 –
前被提升为'int'尝试使用(int i,int j)更改其中一个的签名。同样的事情发生 – Osguima3
@ Osguima3考虑把你的问题标记为回答,如果你的问题解决了;) –