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

时间:2014-02-10 11:43:58

标签: c++ function class object static

我有一个班级

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;
    }
}

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

  

错误C2597:非法引用非静态成员   'Triedenie_cisla :: bubble_cas'

     

错误C3867:'Triedenie_cisla :: bubble_cas':函数调用缺失   参数列表;使用'&amp; Triedenie_cisla :: bubble_cas'创建指针   成员

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

正如错误所述,您无法在静态函数中使用非静态成员。 你可以逐步完成使用静态所需的一切,但是因为在main中创建对象并使用它可能更有意义。 e.g。

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

//...

Triedenie_cisla object;

object.zorad_Sorty();

否则提供所需的参数:

Triedenie_cisla object(&poleHodnot, ddlzka);

object.zorad_Sorty();