Very bizarre. Perhaps try upgrading to 4.15.4? (I'm actually using 4.15.4, now that I look at it). There is a note in the 4.15.3 changelog that they fixed something regarding virtual functions.
Also, what does your sippynetworktables... cpp look like? The class definition looks like this, and yours should be relatively identical:
Code:
class sipNetworkTable : public NetworkTable
{
public:
sipNetworkTable(std::string,NetworkTableProvider&);
virtual ~sipNetworkTable();
/*
* There is a protected method for every virtual method visible from
* this class.
*/
protected:
bool IsServer();
bool IsConnected();
void RemoveConnectionListener(IRemoteConnectionListener *);
void AddConnectionListener(IRemoteConnectionListener *,bool);
void RemoveTableListener(ITableListener *);
void AddSubTableListener(ITableListener *);
void AddTableListener(ITableListener *);
bool GetBoolean(std::string) throw(TableKeyNotDefinedException);
void PutBoolean(std::string,bool);
std::string GetString(std::string) throw(TableKeyNotDefinedException);
void PutString(std::string,std::string);
double GetNumber(std::string) throw(TableKeyNotDefinedException);
void PutNumber(std::string,double);
void PutValue(std::string,ComplexData&);
bool ContainsSubTable(std::string);
bool ContainsKey(std::string);
NetworkTable * GetSubTable(std::string);
public:
sipSimpleWrapper *sipPySelf;
private:
sipNetworkTable(const sipNetworkTable &);
sipNetworkTable &operator = (const sipNetworkTable &);
char sipPyMethods[17];
};
If yours doesn't look like that, then your code is out of sync for some reason.