Avatar billede oddi Nybegynder
21. maj 2009 - 18:58 Der er 2 kommentarer og
1 løsning

Pure virtual class

Hej eksperter.

Jeg er ved at lave en socket wrapper i c++. Min ide er at jeg har en pure virtual class: mySocket. Idén er at write og read funktionerne skal være pure virtual, dvs. at de skal implementeres i en klasse som arver fra mySocket.

mySocket:

public:
  mySocket(int port, int type);
  virtual int myWrite(string writeString) = 0;
  virtual int myRead(string &readString) = 0;
  .
  .
  .
private:
...

Jeg vil så lave en server og client classe, som begge arver fra mySocket. både client og server klassen skal så implementere write og read funktionerne.

myServer:

class myServer : public mySocket
{
public:
  myServer(int port);
  int myWrite(string writeString);
  int myRead(string readString);
private:
  ...
};

Impl:

myServer::myServer(int port) : mySocket(port, SERVER)
{...}

myClient laves på samme måde.

I main laves f.eks:

int main(void)
{
  myServer server(5000);
}

Jeg får så en fejl som siger:

error: cannot declare variable ‘server' to be of abstract type ‘myServer'

Hvad er det som jeg har misforstået? Eller kan man ikke gøre dette på denne måde?

Mvh Oddi
Avatar billede arne_v Ekspert
21. maj 2009 - 19:10 #1
class myServer : public mySocket
{
public:
  myServer(int port);
  int myWrite(string writeString);
  int myRead(string &readString);  // <-------- tilfoej ampersand her
private:
  ...
};
Avatar billede oddi Nybegynder
21. maj 2009 - 19:16 #2
Det virker, mange tak arne_v! Smid et svar.
Avatar billede arne_v Ekspert
21. maj 2009 - 19:24 #3
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester