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