Extra qualification the_atm on member operator là lỗi gì năm 2024

I am doing the example on dialogs from C++ gui programming with QT 4

I have finddialog.h as [code]

ifndef FINDDIALOG_H

define FINDDIALOG_H

include <QDialog>

class QCheckBox; class QLabel; class QLineEdit; class QPushButton;

class FindDialog : public QDialog { Q_OBJECT

public : FindDialog(QWidget *parent = 0);

signals: void findNext(const QString &str,Qt::CaseSensitivity cs); void findPrevious(const QString &str,Qt::CaseSensitivity cs);

private slots: void findClicked(); void enableFindButton(const QString &text); private: QLabel *label; QLineEdit *lineEdit; QCheckBox *caseCheckBox; QCheckBox *backwardCheckBox; QPushButton *findButton; QPushButton *closeButton;

endif

[/code]

finddialog.cpp [code]

include <QtGui>

include "finddialog.h"

FindDialog::FindDialog(QWidget *parent) : QDialog(parent) { label = new QLabel(tr("Find &what:")); lineEdit = new QLineEdit; label->setBuddy(lineEdit); caseCheckBox = new QCheckBox(tr("Match &case")); backwardCheckBox = new QCheckBox(tr("Search &backward")); findButton = new QPushButton(tr("&Find")); findButton->setDefault(true); findButton->setEnabled(false); closeButton = new QPushButton(tr("Close")); connect(lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(enableFindButton(const QString &))); connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked())); connect(closeButton,SIGNAL(clicked()),this,SLOT(close())); QHBoxLayout *topLeftLayout = new QHBoxLayout;

topLeftLayout->addWidget(label); topLeftLayout->addWidget(lineEdit);

QVBoxLayout *leftLayout = new QVBoxLayout; leftLayout->addLayout(topLeftLayout); leftLayout->addWidget(findButton); leftLayout->addWidget(backwardCheckBox);

QVBoxLayout *rightLayout = new QVBoxLayout; rightLayout->addLayout(leftLayout); rightLayout->addLayout(rightLayout); rightLayout->addStretch();

QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout); setLayout(mainLayout);

setWindowTitle(tr("Find")); setFixedHeight(sizeHint().height()); }

void FindDialog :: findClicked() { QString text = lineEdit->text(); Qt:: CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive; if(backwardCheckBox->isChecked()) { emit findPrevious(text,cs); } else{ emit findNext(text,cs); } } void FindDialog :: enableFindButton(const QString &text) { findButton->setEnabled(!text.isEmpty());

} } [/code]

main.cpp [code]

include <QApplication>

include "finddialog.h>

int main(int argc,char *argv[]) { QApplication app(argc,argv); FindDialog *dialog = new FindDialog; dialog->show(); return app.exec(); } [/code]

[code] utkarsh@utkarsh-laptop:~/programming/qt/dialog$ ls dialog.pro finddialog.cpp finddialog.h main.cpp Makefile utkarsh@utkarsh-laptop:~/programming/qt/dialog$ make g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o finddialog.o finddialog.cpp finddialog.cpp:3: error: extra qualification ‘FindDialog::’ on member ‘FindDialog’ finddialog.cpp:3: error: ‘FindDialog::FindDialog(QWidget*)’ cannot be overloaded finddialog.h:14: error: with ‘FindDialog::FindDialog(QWidget*)’ finddialog.cpp:44: error: extra qualification ‘FindDialog::’ on member ‘findClicked’ finddialog.cpp:44: error: ‘void FindDialog::findClicked()’ cannot be overloaded finddialog.h:21: error: with ‘void FindDialog::findClicked()’ finddialog.cpp:56: error: extra qualification ‘FindDialog::’ on member ‘enableFindButton’ finddialog.cpp:56: error: ‘void FindDialog::enableFindButton(const QString&)’ cannot be overloaded finddialog.h:22: error: with ‘void FindDialog::enableFindButton(const QString&)’ finddialog.cpp:60: error: expected unqualified-id at end of input make: *** [finddialog.o] Error 1 utkarsh@utkarsh-laptop:~/programming/qt/dialog$ nano finddialog.cpp utkarsh@utkarsh-laptop:~/programming/qt/dialog$ [/code]

error: Date.cpp:16:12: error: extra qualification ‘Time::’ on member ‘operator+’ [-fpermissive] const Time Time::operator+(const Time &other) ;

What is this? How do I remove this error?

it run fine with Visual Studio 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 # include <iostream> # include <iomanip> using std::cout; using std::setfill; using std::setw; using std::cin; using std::cout; using std::endl; class Time { public: Time( int = 0, int = 0 ); const Time Time::operator+(const Time &other) ; void setTime( int, int); void setHour( int ); void setMinute( int ); int getHour() const; int getMinute() const; void Time::get( ); void Time::display(); private: int hour; int minute; }; Time::Time( int hour, int minute ) { setTime( hour, minute); } void Time::setTime( int hour, int minute ) { setHour( hour ); setMinute( minute ); } void Time::get( ) { int hour, minute, second; cout << "Enter hour : " ; cin >> hour; cout << endl ; cout << "Enter minute : " ; cin >> minute; cout << endl ; setTime(hour,minute); } void Time::setHour( int h ) { hour = h; } void Time::setMinute( int m ) { minute = m; } int Time::getHour ( ) const { return hour; } int Time::getMinute () const { return minute; } void Time::display() { cout << setfill( '0' ) << setw( 2 ) << hour << ":" << setw( 2 ) << minute; } const Time Time::operator+(const Time &other) { int hour = (*this).getHour() + other.getHour(); int min = (*this).getMinute() + other.getMinute(); if ( min > 60 ) { min = min - 60; hour = hour + 1; } if ( hour > 24 ) { hour = hour - 24; } return Time( hour, min); } int main() { Time tm(12,3); tm.display(); int a; cin >>a; return 0; }

line 16 - 19 and 83 -85

Last edited on

Learn to indent.

const Time Time::operator+(const Time &other) ; in line 16 is a declaration 1 2 3 class foo{ //declarations go here };

as you can see, it is obvious of which class the function is a member of, so there is no need to put `Time::' in the declaration.

Chủ đề