Error: expected primary expression before ') token

I tried many times to solve this problem, but received nothing.

The main purpose of this code is to save pair keys (public and private) in the nested class NslObject::KeyK or NewKeyPair1 .

.cpp file

  unsigned long int keyLength = 10; //KeyPair ADD(RSA::GenerateKeyPair(keyLength)); NslObject::KeyK(RSA::GenerateKeyPair(keyLength)); typedef NslObject::KeyK NewKeyPair1; NewKeyPair1(RSA::GenerateKeyPair(keyLength)); //NslObject:: Key OtmanK(NslObject::Get_PublicKey(NewKeyPair1)); 

.h file:

  #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_; // static KeyPair NewKeyPair; public : /* add for new structure engine*/ u_int32_t pdepth; struct MBlist *BinderList; u_int8_t PortNum; //------------------------------------------------ class KeyK { private : KeyPair Kk; public: KeyK( KeyPair D1): Kk(D1) {} const Key &GetPrivateKey() const { return Kk.GetPrivateKey(); } const Key &GetPublicKey() const { return Kk.GetPublicKey(); } //KeyK NewKeyPair ; }; Key Get_PrivateKey(KeyK &K){ return K.GetPrivateKey(); } Key Get_PublicKey(KeyK &K){ return K.GetPublicKey(); } //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_); } //-------------------------------------------------------- }; 

so the problem is this line in the cpp file:

  Key OtmanK(NslObject::Get_PublicKey(NewKeyPair1)); 

when I tried to compile this project, I got this error message:

  object.cc:87: error: expected primary-expression before ')' token 

please help me.

when I tried to make a directed call for the key class, another problem appeared, for example:

  unsigned long int keyLength = 10; //KeyPair ADD(RSA::GenerateKeyPair(keyLength)); NslObject::KeyK(RSA::GenerateKeyPair(keyLength)); typedef NslObject::KeyK NewKeyPair1; NewKeyPair1(RSA::GenerateKeyPair(keyLength)); //NslObject:: //Key OtmanK(NewKeyPair1.GetPublicKey()); std::string message = "othman Alkilany"; // NslObject::NewKeyPair.GetPrivateKey() std::string cypherText = RSA::Encrypt( message, NewKeyPair1.GetPublicKey()); 

Error message:

  error: expected primary-expression before '.' token 
+4
source share
1 answer

I think your problem is in the second line:

 typedef NslObject::KeyK NewKeyPair1; NewKeyPair1(RSA::GenerateKeyPair(keyLength)); 

By eliminating typedef, you basically wrote the following:

 NslObject::KeyK(RSA::GenerateKeyPair(keyLength)); 

So you can clearly see that you are missing the variable name for this line.

To fix this, name the variable / object:

 NewKeyPair1 somekeypair(RSA::GenerateKeyPair(keyLength)); 

However, I assume that you used typedef anyway? Have you tried calling it NewKeyPair1 ? Something like that:

 NslObject::KeyK NewKeyPair1(RSA::GenerateKeyPair(keyLength)); 
+2
source

Source: https://habr.com/ru/post/1492558/


All Articles