2017-08-03 26 views
-3

我需要下面的方法来返回一个抽象类型ALMObjectC,但我发现这只能通过指针完成;但是当我声明这一点时,编译器指出:C++如何正确使用抽象返回类型?

Error: no suitable conversion function from "ALMObjectC" to "ALMObjectC*" exists. 

那么我该如何解决这个问题呢? 下面是有问题的方法:

ALMObjectC* AlmRESTC::findChild(int ref){ 
    //objectSet(ref) => ALMObjectC 
    for(list<ALMObjectC>::iterator cons = objectSet.begin(); (cons != objectSet.end()); cons++){ 
     if (distance(objectSet.begin(), cons) == ref) 
      return *cons; 
    } 
} 
+2

错误信息是很清楚.. –

+2

考虑返回一个参考:使用'ALMObjectC&AlmRESTC :: findChild(INT REF)' – 2017-08-03 10:11:36

+0

@ manni66参考不会让他使用多态性 – Xatyrian

回答

2

*cons会给你它具有类型ALMObjectC你存储的对象。如果您想返回该对象的地址,你必须做

return &(*cons) 
+0

I.e.返回这个指针的值,作为另一个指针的共域。在降噪。 – Olivier10178