Header-Terror 8[



  • Hallo,

    ich habe momentan folgendes (meiner Meinung nach schon gelöstes) Problem.

    Ich habe eine Klasse MainWindow. In dieser wird eine Klasse ABC::Menu benutzt (ABC ist ein Namespace).
    Die Klasse ABC::Menu selbst benötigt für eine Funktion ein MainWindow Objekt. Soweit, so gut.

    Geheadert sieht das so aus:

    // MainWindow.h
    
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    class MainWindow;
    
    #include "Menu.h"
    
    class MainWindow
    {
      // ...
      ABC::Menu menu_;
    };
    
    #endif
    
    // Menu.h
    
    #ifndef MENU_H
    #define MENU_H
    
    namespace ABC
    {
      class Menu;
    }
    
    #include "MainWindow.h"
    
    namespace ABC
    {
      class Menu
      {
        // ...
        void blub(MainWindow* window);
      };
    }
    
    #endif
    

    Möchte ich nun die zu Menu.h gehörende CPP-Datei kompilieren, beschwert sich der freundliche MSVC 8.0 Compiler:

    'MainWindow::menu_' verwendet undefiniertes class 'ABC::Menu'

    Aber warum? Normalerweise macht man das doch so, oder nicht?
    Die MainWindow.cpp kompiliert übrigends ohne Probleme.

    Für einen hilfreichen Tipp wäre ich sehr dankbar, langsam regt mich C++ schon wieder auf :p.



  • #if !defined(MAINWINDOW_H__INCLUDED)
    #define MAINWINDOW_H__INCLUDED
    
    #include "Menu.h"
    
    class MainWindow
    {
      ABC::Menu menu_;
    };
    
    #endif // MAINWINDOW_H__INCLUDED
    
    #if !definded(MENU_H__INCLUDED)
    #define MENU_H__INCLUDED
    
    class MainWindow;
    
    namespace ABC
    {
      class Menu
      {
        void blub(MainWindow* window);
      };
    }
    
    #endif // MENU_H__INCLUDED
    

    ... wofür so viel include's?


Anmelden zum Antworten