4 Stimmen

Wrapping von boost::shared_ptr in PHP mit SWIG

Wenn ich SWIG verwende, um diese C++-Funktion zu verpacken:

boost::shared_ptr<Client> Client::create() {
    return boost::shared_ptr<Client>(new Client());
}

Und rufen Sie es dann in PHP auf:

$client = Client::create();
echo gettype($client);

Die Art der $client ist resource , nicht object und kann daher nicht anrufen Client Methoden.

Welche Möglichkeiten habe ich, diese Funktion zu verpacken? Ich erstelle einen PHP-Wrapper für die C++-Bibliothek eines anderen Anbieters, also muss ich den Code so überarbeiten, dass er keine boost::shared_ptr ist nicht wirklich eine Option.

Das ist die einzige Lösung, die ich bisher gefunden habe:

MyClient Client::createObject() {
    return *Client::create();
}

Und ruft es in PHP auf:

$client = Client::createObject();
echo gettype($client);

Jetzt ist die Art der $client ist object und ich kann anrufen Client Methoden darauf. Ist dies eine sinnvolle Abhilfe? Wenn nicht, was sollte ich dann tun?

0voto

Pikrass Punkte 6549

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X