g++ Problem beim compilieren

Gast #1043048
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
#1043057
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?
Gast #1043064
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren