[bt-devel] namespace problems
Joachim Ansorg
bt-devel@crosswire.org
Sat, 19 Oct 2002 22:34:23 +0200
David White, I think this eMail is especially for you because you know the
namespaces well.
You pointed me into the direction to use namespaces for the treelike structure
I wanted.
Now I have something like
namespace CResMgr {
inline const QString makeToolTip( const QString& text ) {
return text;
};
inline const QString makeWhatsThis( const QString& title, const QString&
description ) {
return
QString::fromLatin1("<center><B>%1</B></center><HR>%2").arg(title).arg(description);
};
namespace mainMenu { //Main menu
namespace file { //Main menu->File
namespace clearQueue {
const QString tooltip = makeToolTip( i18n("Clear the printing
queue") );
const QString whatsthis = makeWhatsThis( tooltip, i18n("Clear the
print queue of BibleTime. All items will be removed from the list and the
print button will be disabled.") );
const QString icon = QString::fromLatin1("queue");
const KShortcut accel = KShortcut();
const char* actionName = "fileClearQueue_action";
}
namespace print { //a standard action
const QString tooltip = makeToolTip( i18n("Open the
printerdialog") );
const QString whatsthis = makeWhatsThis( tooltip, i18n("Open the
printer dialog of BibleTime. Here you can edit the print queue and assign
styles to the items.") );
}
namespace quit { //a standard action
const QString tooltip = makeToolTip( i18n("Close BibleTime") );
const QString whatsthis = makeWhatsThis( tooltip, i18n("Close
BibleTime and save the settings.") );
}
}
}
etc.
But compiling BibleTime with this header included in two or more places I get
the following compiler warnings about multiple symbol definitions:
./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x0):
multiple definition of `CResMgr::mainMenu::file::clearQueue::actionName'
bibletime_init.o(.data+0x0): first defined here
./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x4):
multiple definition of `CResMgr::mainMenu::view::showMainIndex::actionName'
bibletime_init.o(.data+0x4): first defined here
./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x8):
multiple definition of `CResMgr::mainMenu::mainIndex::search::actionName'
bibletime_init.o(.data+0x8): first defined here
./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0xc):
multiple definition of `CResMgr::mainMenu::window::loadProfile::actionName'
bibletime_init.o(.data+0xc): first defined here
How can I avoid these problems? I have no idea.
Thank you very much for any help!
--
Joachim Ansorg
www.bibletime.de
www.ansorgs.de