PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compiler error "<near match>" ?



micha
17-10-2002, 22:09
Moin,

Hab da gerade ein Problem das mich mittlerweile an den Rand des Wahnsinns treibt ;)
Hier erst mal der Code:


configlesson.h
class ConfigLesson : public ConfigLessonDlg
{
Q_OBJECT

public:

ConfigLesson (QWidget *parent=0, const char *name=0);
~ConfigLesson ();

/** Returns current color for even-numbered lines */
const QColor& colorEvenLines (void);
/** Returns current color for odd-numbered lines */
const QColor& colorOddLines (void);
};



typemaster.h
void TypeMaster::slotConfigTypeMasterApply (ConfigDialog *dialog)
{
LessonView *lesson = view->lesson ()->currentLesson ();

/* Apply page by page the configuration dialog´s options */

/* Page - Lesson */
lesson->setLineColors (dialog->lessonPage ()->colorEvenLines (),
dialog->lessonPage ()->colorOddLines ());
}


lessonview.h
class LessonView : public QTextEdit
{
Q_OBJECT

public:

LessonView (QWidget *parent=0, const char *name=0);
~LessonView ();

/** Sets background colors for several lines
*@param even Defines color for even-numberd lines.
*@param odd Defines color for odd-numbered lines.
*/
void setLineColors (const QColor& even, const QColor& odd);
};


Der Compiler meckert folgendermaßen:



typemaster.cpp: In member function `void
TypeMaster::slotConfigTypeMasterApply(ConfigDialog *)':
typemaster.cpp:493: no matching function for call to `ConfigLesson::
colorEvenLines() const'
configlesson.h:48: candidates are: const QColor&
ConfigLesson::colorEvenLines() <near match>
typemaster.cpp:493: no matching function for call to `ConfigLesson::
colorOddLines() const'
configlesson.h:49: candidates are: const QColor&
ConfigLesson::colorOddLines() <near match>


Ich kann damit gerade irgendwie gar nichts mit anfangen :confused
Vielleicht sieht ja einer von Euch den Fehler.

Gruß micha

anda_skoa
17-10-2002, 23:51
Offensichtlich ist das Objekt, das bei



dialog->lessonPage()


Zurückgeliefert wird als const deklariert.
An einem const Object darf man aber nur Methoden aufrufen, die auch const deklariert sind.

Du kannst entweder das Object nocht const machen oder die Methoden const.
Die zweite Methode ist besser, weil du eh nur Werte haben willst, also das Object wirklich nicht ändern willst.



/** Returns current color for even-numbered lines */
const QColor& colorEvenLines (void) const;
/** Returns current color for odd-numbered lines */
const QColor& colorOddLines (void) const;


Signatur im cpp entsprechend anpassen.

Ciao,
_

micha
18-10-2002, 16:09
Offensichtlich ist das Objekt, das bei
dialog->lessonPage()
Zurückgeliefert wird als const deklariert.


Genau das wars, dank Dir !
Wüsste nicht, wie lange ich ohne Deinen Tip noch gesucht hätte ;)


configdialog.h
class ConfigDialog : public KDialogBase
{
Q_OBJECT

public:

/**construtor */
ConfigDialog (QWidget* parent=0, const char *name=0, bool modal=false );
/**destructor */
~ConfigDialog ();

/**Returns a pointer to the lesson configuration page*/
const ConfigLesson *lessonPage (void);
};


Das ich das Objekt als const deklariert habe, ist mir doch total entgangen ;)

Gruß micha

anda_skoa
18-10-2002, 16:36
:)
Als ich das erste Mal diese Fehlermeldung hatte, hab ich ewig gesucht!

Ciao,
_

micha
18-10-2002, 17:05
Ein Vorteil hat es allerdings - man vergissts so schnell nicht wieder ;)

Gruß micha