你有兩種可能性。第一種是簡單地返回double
代替參考const double &
double Waz::operator()(int i,int j) const
{
return ((WazImpl const)(*p))(i,j);
}
第二個是與基準返回到提供的原始值被呼叫操作者也返回const引用加倍的
const double & Waz::operator()(int i,int j) const
{
const double &rd = (WazImpl const)(*p))(i,j);
return rd;
}
這裏是一個簡單的例子,演示第二種方法
#include <iostream>
struct A
{
int & operator()(){ return a; }
int a = 10;
};
struct B : A
{
int & operator()()
{
int &ri = A::operator()();
return ri;
}
};
int main()
{
B b;
b() = 20;
std::cout << b.a << std::endl;
return 0;
}
* p表示什麼? –
'WasImp :: operator()(int,int)'的實現是什麼? –
避免C-cast。 (我認爲它應該是'(WazImpl const&)(* p)',參考) – Jarod42