我的课程结构如下:
class A {
public:
A();
virtual void doSomething() {
qDebug() << "Hello from class A";
}
};
class B : public A {
public:
B();
void doSomething() {
qDebug() << "Hello from class B";
}
};
class C : public A {
public:
C();
void doSomething() {
qDebug() << "Hello from class C";
}
};
在其他地方我有这样的方法:
void doSomethingElse(const A argument = A()) {
argument.doSomething();
}
每次调用doSomethingElse
我都会得到A&#34;来自A&#34;输出,即使我传递一个B类或C类的实例作为参数。
我在这里做错了什么?
答案 0 :(得分:3)
需要通过引用传递:
$.ajax({
type: "POST",
url: "phppage.php",
dataType: "JSON",
success: function(data) {
$.each(data, function(key, value) {
poi_marker = {
marker: {
lat: data.latitude,
lng: data.longitude,
}
}
}
poi_markers.push(poi_marker);
});
map.addMarkers(poi_markers);
}
});
如果您不通过引用传递,则参数将成为参数的副本,并且仅复制参数的void doSomethingElse(const A& argument = A()) {
argument.doSomething();
}
部分。然后在A
上调用doSomething()
,而不是最初作为参数传递的对象。