我有一个班级
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 ++的新手
答案 0 :(得分:3)
由于zorad_Sorty
是静态的,因此它只能访问静态成员。但是您的实现会访问非静态成员。
如果您需要访问此类的非静态成员,则必须实例化它的实例。
或者,如果必须使用静态方法,则必须仅使用静态成员实现该方法。
答案 1 :(得分:0)
正如错误所述,您无法在静态函数中使用非静态成员。 你可以逐步完成使用静态所需的一切,但是因为在main中创建对象并使用它可能更有意义。 e.g。
(编辑)如果您有默认构造函数...
//...
Triedenie_cisla object;
object.zorad_Sorty();
否则提供所需的参数:
Triedenie_cisla object(&poleHodnot, ddlzka);
object.zorad_Sorty();