错误:多个重载函数实例与参数列表

时间:2015-05-28 15:14:36

标签: c++ visual-studio overloading

我正在使用OpenMesh库,它们提供了两个函数edge(),它们的constness不同。 Const edge() vs edge()。有没有办法指定编译器我要使用哪个函数?

看起来这应该是图书馆的一个不同的设计决定,但不确定我可以改变它,所以如果有任何我可以做的事情在编译器中绕过它...我&#39 ; m使用VS2013。

我意识到人们已经对这个错误提出了问题,但我还没有找到任何有助于此类案件的事情。

1 个答案:

答案 0 :(得分:3)

我认为你的情况是这样的:你有一个

class aclass
{
  edge_t edge(void) ;
  edge_t edge(void) const ;
} ;

如果你有一个const对象,那么将调用第二个版本,否则将调用非const。所以,如果你有

const aclass x ;
aclass y ;

x.edge() ; // calls the second
y.edge() ; calls the first
const_cast<const aclass &>(y).edge() ; // calls the const (second) 

后者是一种(相对)安全的作弊行为......