Fehler in einer Wrapperklasse
-
Hallo, ich habe folgende Fehler in einer Wrapperklasse die ich gerade erstelle und komme damit einfach nicht weiter:
src/PacketEthernetWrapper.C:19: error: declaration of ‘Frogger::Net::PacketEthernet pPacketType’ shadows a parameter
src/PacketEthernetWrapper.C: In member function ‘void Frogger::Net::PacketEthernetWrapper::SetEthernetSourceAdrWrapper(std::string)’:src/PacketEthernetWrapper.C:29: error: request for member ‘SetEthernetSourceAdr’ in ‘this’, which is of non-class type ‘Frogger::Net::PacketEthernetWrapper* const’
src/PacketEthernetWrapper.C: In member function ‘void Frogger::Net::PacketEthernetWrapper::SetEthernetDestinationAdrWrapper(std::string)’:Der Quelltext dazu:
#include <Packet.h> #include "PacketEthernetWrapper.h" #include <Header_Libnet.h> #include <HBLogger.h> #include <string> namespace Frogger { namespace Net { using namespace std; using namespace Homer::Base; PacketEthernetWrapper::PacketEthernetWrapper() { PacketEthernet(); } PacketEthernetWrapper::PacketEthernetWrapper(int pPacketType){ PacketEthernet(pPacketType); } PacketEthernetWrapper::~PacketEthernetWrapper() { } void PacketEthernetWrapper::SetEthernetSourceAdrWrapper(std::string pAddress) { PacketEthernet::SetEthernetSourceAdr(pAddress); }Ich möchte quasi aus meiner Qrapperklasse einfach nur über die Wrapperfunktionen die ansonsten gleichnahmigen Funktionen aus der anderen Klasse aufrufen.
Sinn des ganzen ist es eine hier nicht gepostete Funktion in ihren Übergabeparametern so zu verändern dass der Java Native Interface compiler die frisst (Übergabeparameter war ein Pointer und Java mag ja keine Pointer)
-
Er kennt scheinbar die Klasse PacketEthernet nicht. Fehlt der Header? Oder liegt die in einem Namespace, den du nicht benutzt?
-
Willst du eigentlich sowas machen
class PacketEthernet { public: explicit PacketEthernet(int i) {} void SetEthernetSourceAdr(std::string) {} }; class PacketEthernetWrapper { public: explicit PacketEthernetWrapper(int i) : wrap_(i) {} void SetEthernetSourceAdr(const std::string& s) { wrap_.SetEthernetSourceAdr(s); } private: PacketEthernet wrap_; };
-
pumuckl schrieb:
Er kennt scheinbar die Klasse PacketEthernet nicht. Fehlt der Header? Oder liegt die in einem Namespace, den du nicht benutzt?
Ja so dumm das auch klingt... Ich hab vergessen im Header die Oberklasse richtig einzubinden (bzw. hatte da nen Buchstabendreher)
Zu dem Fehler mit dem shadowparameter: Ich hab das jetzt einfach auskommentiert in der Hoffnung der nimmt dann automatisch das der oberklasse.
Falls da noch jemand nen vorschlag hat wär das super^^Danke schonmal!!!