amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > C++ Inline Konstruktoren/Destruktoren [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-05-14, 11:42 h

Reth
Posts: 1860
User
Hallo allerseits,

ich bin noch ein blutiger C++ Anfänger, habe bisher nur einigermaßen C und exzessiv JAva programmiert.

Nun habe ich folgendes Problem.

Ich habe 2 Headerdateien zu denen keine *.cc Dateien exisitieren:

MenusC.h

C/C++ Code:
#ifndef MENUS_H
#define MENUS_H

#include <list>

#include "MenuC.h"

class MenusC
{
public:
MenusC() {}
~MenusC() {}

void addMenu(MenuC& menu) { menus.push_back(menu); };

private:
list<MenuC> menus;

};

#endif


und MenuC.h:

C/C++ Code:
#ifndef MENU_H
#define MENU_H

#include <list>
#include <typeinfo>

#include "MenuEntryC.h"
#include "MenuTitleC.h"
#include "MenuItemC.h"
#include "MenuSeperatorC.h"

class MenuC
{
public:
MenuC() {}
~MenuC() {}

void setTitle(MenuTitleC& menuTitle)
{
// Am Anfang der Liste steht immer der Menütitel!
if (typeid(entries.pop_front()) == typeid(MenuTitleC))
{
entries.pop_front();
}
entries.push_front(menuTitle);
};
void addItem(MenuItemC& menuItem) { entries.push_back(menuItem); };
void addSeperator(MenuSeperatorC& menuSeperator) { entries.push_back(menuSeperator); };

private:
list<MenuEntryC> entries;

};

#endif

In der Klasse mit der Main-Methode steht nun folgendes:

C/C++ Code:
#include "MenuC.h"
#include "MenusC.h"
.
.
.
MenusC menus;
MenuC file;
.
.
.

Ich verwende GCC 3.3 und g++ bringt nun folgende Fehler:

undefined reference to 'MenusC::~MenusC(void)'
undefined reference to 'MenuC::~MenuC(void)'
undefined reference to 'MenusC::MenusC(void)'
undefined reference to 'MenuC::MenuC(void)'
undefined reference to 'MenuC::~MenuC(void)'
undefined reference to 'MenusC::~MenusC(void)'

Woran liegt das? Brauche ich immer *.cc Dateien, die mit diesen *.h Dateien compiliert und gelinkt werden, bevor sie woanders verwendet werden können?

In anderen Klassen, die hier z.T. Verwendung finden (MenuItemC, MenuSeperatorC) befinden sich ebenfalls inline Destruktoren. Zu diesen Klassen exisiteren *.cc Dateien und es werden Objectdateien erzeugt. Außer bei einer bekomme ich die o.a. Fehlermeldungen für diese Klassen aber nicht!
Bei Bedarf kann ich deren Code auch noch posten!

Da blick ich nicht durch!

Kann mir jmd. nen Tip geben?

Vielen Dank schon einmal!

Ciao

[ - Answer - Quote - Direct link - ]

2005-05-14, 14:50 h

thomas
Posts: 7721
User

Versuchs mal mit MenuC(void){} und ~MenuC(void){}. Immerhin meckert er ja MenuC::MenuC(void) an und nicht MenuC::MenuC().

Gruß Thomas


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-14, 14:56 h

Reth
Posts: 1860
User
Zitat:
Original von thomas:

Versuchs mal mit MenuC(void){} und ~MenuC(void){}. Immerhin meckert er ja MenuC::MenuC(void) an und nicht MenuC::MenuC().

Gruß Thomas



Danke für den Tip, ist aber ne ungewöhnliche Schreibweise für Konstruktoren/Destruktoren, oder?

Bei meinen anderen Klassen, die jedoch alle aus *.h und *.cc bestehen, sind die Defaultkonstruktoren/-destruktoren nie mit void als Parameter spezifiziert. Einige dieser Klassen haben inline Destruktoren in ihren Headern und nicht-Defaultkostruktoren in den *.cc Dateien.

Bin mal gespannt, was der Compiler sagt, wenn ich void eintrage!

Ciao René

[ Dieser Beitrag wurde von Reth am 14.05.2005 editiert. ]

[ - Answer - Quote - Direct link - ]

2005-05-14, 17:17 h

Reth
Posts: 1860
User
Zitat:
Original von thomas:

Versuchs mal mit MenuC(void){} und ~MenuC(void){}. Immerhin meckert er ja MenuC::MenuC(void) an und nicht MenuC::MenuC().

Gruß Thomas


Die Fehlermeldungen bleiben weiterhin dieselben.

Ciao

[ - Answer - Quote - Direct link - ]

2005-05-14, 18:29 h

Reth
Posts: 1860
User
Problem gelöst.

Die Klasse, welche MenuC.h und MenusC.h verwendete wurde von mir versehentlich im makefile auskommentiert, so dass ein altes Objectfile verwendet wurde!

Nun tut es.

Danke und bis zum nächsten Mal

Ciao

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > C++ Inline Konstruktoren/Destruktoren [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.