ich habe eineTest API geschrieben (c++) und möchte dafür ein C Interface schreiben. Die API besteht aus 2 Klassen.
Controller.h und ControllerResult.h
die Controller.h Klasse hat eine Funktion, die ein "ControllerResult" Objekt zurück gibt.
Code: Alles auswählen
ControllerResult calculate();
Code: Alles auswählen
#define CONTROLLER_ID uint64_t
#define RESULT_ID uint64_t
Code: Alles auswählen
ERROR TESTAPI_Calculate(CONTROLLER_ID ControllerID, Result& result)
{
int error = NONE;
RESULT_ID ResultID;
TESTAPI::ControllerResult* pResult1 = new TESTAPI::ControllerResult();
ResultID = reinterpret_cast<RESULT_ID>(pResult1);
TESTAPI::ControllerResult* pResult = reinterpret_cast<TESTAPI::ControllerResult*>(ResultID);
TESTAPI::Controller* pController = reinterpret_cast<TESTAPI::Controller*>(ControllerID);
if (pController != nullptr) {
pResult = pController ->calculate(); // hier ist dann die Fehlermeldung
return static_cast<ERROR>(error);
}
...
...
Dann kommt folgender Fehler:
Kann man das beheben ohne die API zu ändern? Also irgendwie den Rückgabewert hier in der FUnktion zu einem Pointer umwandeln/adressieren/zuweisen ?testapi.cpp:160:19: error: assigning to 'TESTAPI::ControllerResult *' from incompatible type 'TESTAPI::ControllerResult'