This is the first time I asked my question on Stackoverflow. my qustion, I received this message when I try to run this code:
object.h
#ifndef __NCTUNS_nslobject_h__ #define __NCTUNS_nslobject_h__ #include <stdio.h> #include <event.h> //--------------------------------------------------- #include <cstdlib> //srand() #include <iostream> //cout #include <ctime> //time() #include <cstring> //strcmp() //#include "test.h" //testing functions #include "RSA.h" //GenerateKeyPair() #include "PrimeGenerator.h" //Generate() //#include <stdio.h> #include <stdlib.h> #include <sstream> #include <string> //--------------------------------------------------- class MBinder; struct plist { u_int8_t pid; struct plist *next; }; struct MBlist { u_int8_t portnum; MBinder *sendt; struct MBlist *next; }; /*========================================================================= Define Macros =========================================================================*/ #define DISABLED 0x00 #define ENABLED 0x01 /*========================================================================= Define Class ProtoType =========================================================================*/ class NslObject { private: char *name_; /* Instance name */ const u_int32_t nodeID_; /* Node Id */ const u_int32_t nodeType_; /* Node type, eg: SWITCH, HOST.. */ u_int32_t portid_; /* port Id */ struct plist *MPlist_; //const KeyPair newKeyPair; public : /* add for new structure engine*/ u_int32_t pdepth; struct MBlist *BinderList; u_int8_t PortNum; //------------------------------------------------ static KeyPair newKeyPair ; //static KeyPair *KeyPtr1 ;//= new KeyPair; //------------------------------------------------ u_char s_flowctl; /* flow control for sending pkt */ u_char r_flowctl; /* flow control for receiving pkt */ MBinder *recvtarget_; /* to upper component */ MBinder *sendtarget_; /* to lower component */ NslObject(u_int32_t, u_int32_t, struct plist*, const char *); NslObject(); virtual ~NslObject(); virtual int init(); virtual int recv(ePacket_ *); virtual int send(ePacket_ *); virtual int get(ePacket_ *, MBinder *); virtual int put(ePacket_ *, MBinder *); virtual ePacket_ *put1(ePacket_ *, MBinder *); virtual int command(int argc, const char *argv[]); virtual int Debugger(); inline void set_port(u_int32_t portid) { portid_ = portid; }; inline u_int32_t get_port() const { return(portid_); }; inline struct plist* get_portls() const { return(MPlist_); }; inline const char * get_name() const { return(name_); } inline u_int32_t get_nid() const { return(nodeID_); } inline u_int32_t get_type() const { return(nodeType_); } //-------------------------------------------------------- static void Set_KeyPair(void); // NslObject(const KeyPair &newKeyPair): // newKeyPair(newKeyPair) { // } //NslObject( KeyPair &other, u_int32_t &N_ID, u_int32_t &N_Type) : newKeyPair(other),nodeID_ (N_ID),nodeType_ (N_Type) {} /* Key(const BigInt &modulus, const BigInt &exponent) : modulus(modulus), exponent(exponent) { }*/ }; /* Added by CCLin to uniformly format * debugging messages. */ #define NSLOBJ_DEBUG_STRING_HEAD() do { \ double sec; \ TICK_TO_SEC(sec, GetCurrentTime()); \ printf("%11.7f: [%03d]%s::%s: ", \ sec, get_nid(), \ getModuleName(this), __FUNCTION__); \ } while(0) #endif /* __NCTUNS_object_h__ */
in Object.cc
void Set_KeyPair() { unsigned long int keyLength = 10;
So my problem is when the compiler starts compiling, it stops at this code:
NslObject::newKeyPair (RSA::GenerateKeyPair(keyLength));
and the message that appears:
Error: object.cc: In function 'void Set_KeyPair()': object.cc:53: error: no match for call to '(KeyPair) (KeyPair&)'
So, how can I assign the class value of the generated key pair to NslObject :: newKeyPair.
Your help is much appreciated in advance and thank you.