QT:当我有虚函数时,无法调用没有对象的成员

时间:2014-04-22 07:22:34

标签: c++ qt

我自从QT中的另一个函数开始调用

我在calendar.h中的虚函数:

virtual string whatDay(string){ return "";}

我的功能来自calendarGregorian.h:

string whatDay(string)

我的函数on_whatDayButton_clicked()来自mainwindow.cpp

void MainWindow::on_whatDayButton_clicked()
{
    QString whatDayString;
    string getDay;
    whatDayString = ui->lineGetDay->text();
    string day = whatDayString.toUtf8().constData();
    getDay = calendarGregorian::whatDay(day);

}

但是,当我正在编译时......它会向我显示此错误:

错误:无法调用成员函数'虚拟std :: string calendarGregorian :: whatDay(std :: string)'没有对象      getDay = calendarGregorian :: whatDay(day);                                             ^

请......我需要帮助

1 个答案:

答案 0 :(得分:1)

calendar.h:

static string whatDay(string){ return "";}

calendarGregorian.h:

class CalendarGregorian: Calendar{
public:
    static int superCalculationFactor = 276485;
    int notSoGood;
    static string whatDay(string)
    {
        //do the formatting using superCalculationFactor
        //you can't use notSoGood!
        return result;
    }
}

你不需要一个对象来调用该函数。这里的问题是方法需要调用对象,而静态函数可以在没有对象的情况下调用。

但如果你这样做,不要忘记你只能访问静态类变量,而不能访问对象变量。