我正在使用OpenMesh库,它们提供了两个函数edge(),它们的constness不同。 Const edge() vs edge()。有没有办法指定编译器我要使用哪个函数?
看起来这应该是图书馆的一个不同的设计决定,但不确定我可以改变它,所以如果有任何我可以做的事情在编译器中绕过它...我&#39 ; m使用VS2013。
我意识到人们已经对这个错误提出了问题,但我还没有找到任何有助于此类案件的事情。
答案 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)
后者是一种(相对)安全的作弊行为......