www.mikrocontroller.net

Forum: PC-Programmierung g++ Problem beim compilieren


Autor: Linux_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
/* Server-File */

#include <iostream>

#include "mymsq.h"

int main(void)
{
MyMSQ server;
int key_dummy;

  if(server.open(1234,0666  | IPC_CREAT))
  {
    key_dummy = server.get_key();
    std::cout << key_dummy << "\n";
  }

  return 0;
}
/*      My Message Queues Header File           */
#ifndef _MYMSQ_H
#define _MYMSQ_H

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
using namespace std;

class MyMSQ
{
  private:
    int key;
    int msq_id;
  public:
    // Get-Methoden
    inline int get_key(void) const;
    inline int get_msq_id(void) const;

    // Klassen-Methoden
    bool open(const int key, const int flag);
};

#endif
#include "mymsq.h"
using namespace std;

inline int MyMSQ::get_msq_id(void) const
{
  return this->msq_id;
}

inline int MyMSQ::get_key(void) const
{
  return this->key;
}

bool MyMSQ::open(const int key,const int flag)
{
int id;

  id = msgget( key, flag );
  if(id < 0 )
    return false;

  this->msq_id = id;
  this->key = key;
  return true;
}

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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne Fehlermeldung wär schon hilfreich.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: AVRaider (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.