在下面的简化示例中,我尝试使用已存在的父实现来实现一个函数(来自接口)。 我想知道是否有人可以解释为什么这不起作用以及是否有简单的解决方法。
let marked = JSON.parse(pointMarkers);
function placeMarker() {
for(let i in marked){
let lat = marked[i].lat;
let lng = marked[i].lng;
let title = marked[i].name;
let marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
icon: '/marker.png',
title: title
});
};
};
错误是:
using namespace std;
struct IInterface
{
virtual void vFunction () = 0;
};
struct Base
{
void vFunction () { }
};
struct A: public Base, public IInterface
{
using Base::vFunction;
//virtual void vFunction() { Base::vFunction(); } // Is this the only way to reuse Base code?
};
int main ()
{
A a;
IInterface *pInterface = &a;
a.vFunction();
pInterface->vFunction();
return 0;
}
答案 0 :(得分:1)
vFunction
中的 base
与vFunction
中的IInterface
无关。因此,编译器无法自动使用一个而不是另一个。您的转发代码是执行此操作的唯一方法。