C++ 在 main 中调用类的静态函数

C++ call static function of class in main

本文关键字:静态函数 调用 main C++      更新时间:2023-10-16

我有一个类

class Triedenie_cisla{
    public:
        Triedenie_cisla(int *poleHodnot, int ddlzka); 
        int *pole, dlzka;
        double bubble_cas, selection_cas, insertion_cas, quick_cas;
        vector<int> mnozina_int;                   
        string vypis_pola();        
        void BubbleSort_int();      
        void SelectionSort_int();   
        void InsertSort_int();  
        void QuickSort_int();
        void static zorad_Sorty();
};

和功能

void Triedenie_cisla::zorad_Sorty(){
    if ( (quick_cas<bubble_cas) && (quick_cas<selection_cas) && (quick_cas<insertion_cas) ) {
        cout << "The best one is Quick Sort with time "<< quick_cas << " ms"<< endl;
    }
}

在我的主.cpp我需要调用这个函数。Triedenie_cisla::zorad_Sorty();我使用了静态 thkinking,这可能有助于在不创建对象的情况下调用我的函数,但我总是收到这些错误

错误 C2597:对非静态成员的非法引用 "Triedenie_cisla::bubble_cas"

错误 C3867:"Triedenie_cisla::bubble_cas":缺少函数调用 参数列表;使用"&Triedenie_cisla::bubble_cas"创建指针 致会员

如何解决问题?非常感谢,我是 c++ 的新手

由于zorad_Sorty是静态的,因此它只能访问静态成员。但是您的实现访问非静态成员。

如果需要访问此类的非静态成员,则必须实例化它的实例。

或者,如果必须使用静态方法,则必须仅使用静态成员实现该方法。

正如错误所说,您不能在静态函数中使用非静态成员。您可以逐渐使需要使用静态的所有内容都变为静态,但是在main中创建对象并使用它可能更有意义。例如

编辑)如果您有默认构造函数...

//...
Triedenie_cisla object;
object.zorad_Sorty();

否则,请提供所需的参数:

Triedenie_cisla object(&poleHodnot, ddlzka);
object.zorad_Sorty();