Forum: PC-Programmierung g++ Problem beim compilieren


von Linux_Anfänger (Gast)


Lesenswert?

Hallo,

ich fange gerade an unter Linux C++ zu Programmieren. Ich habe mir einen 
Klasse MyMSQ geschrieben und in die Datei mymsq.h gesteckt, die 
definition in die datei mymsq.cpp! Soweit so gut, aber g++ sagt mir 
immer das eine Funktion nicht definiert wurde.

Wenn ich die Definition mit in die Header-Datei kopiere funktioniert das 
Programm.

Hier mein Source:
1
/* Server-File */
2
3
#include <iostream>
4
5
#include "mymsq.h"
6
7
int main(void)
8
{
9
MyMSQ server;
10
int key_dummy;
11
12
  if(server.open(1234,0666  | IPC_CREAT))
13
  {
14
    key_dummy = server.get_key();
15
    std::cout << key_dummy << "\n";
16
  }
17
18
  return 0;
19
}
1
/*      My Message Queues Header File           */
2
#ifndef _MYMSQ_H
3
#define _MYMSQ_H
4
5
#include <sys/types.h>
6
#include <sys/ipc.h>
7
#include <sys/msg.h>
8
using namespace std;
9
10
class MyMSQ
11
{
12
  private:
13
    int key;
14
    int msq_id;
15
  public:
16
    // Get-Methoden
17
    inline int get_key(void) const;
18
    inline int get_msq_id(void) const;
19
20
    // Klassen-Methoden
21
    bool open(const int key, const int flag);
22
};
23
24
#endif
1
#include "mymsq.h"
2
using namespace std;
3
4
inline int MyMSQ::get_msq_id(void) const
5
{
6
  return this->msq_id;
7
}
8
9
inline int MyMSQ::get_key(void) const
10
{
11
  return this->key;
12
}
13
14
bool MyMSQ::open(const int key,const int flag)
15
{
16
int id;
17
18
  id = msgget( key, flag );
19
  if(id < 0 )
20
    return false;
21
22
  this->msq_id = id;
23
  this->key = key;
24
  return true;
25
}

Alles liegt im selben Ordner! und wird so aufgerufen:

g++ -o server server.cpp mymsq.cpp -Wall

Ich weiß leider nicht was ich falsch mache.

Wäre nett wenn mir jemand helfen könnte,
Danke
Michael

von Sven P. (Gast)


Lesenswert?

Ne Fehlermeldung wär schon hilfreich.

von Stefan E. (sternst)


Lesenswert?

Das Problem ist das inline. Es funktioniert halt nicht, eine Funktion 
im Header inline zu deklarieren, und die Implementierung dann in eine 
CPP-Datei zu packen. Wie soll der Compiler dann in server.cpp, wo ja nur 
der Header eingebunden wird, an den Code der Funktion kommen, um ihn 
dort einzufügen?

von AVRaider (Gast)


Lesenswert?

OK, jetzt geht es,
hab das Beispiel aus einem C++ Buch, daher habe ich daran nicht 
gezweifelt und bin davon ausgegangen das es so gehen müsst.

Was lernt man daraus?
Traue keinem Buch welches du nicht selbst geschrieben hast ;-)

Danke nochmal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.