您好我无法找到如何为我在其中一个类中使用的变量赋值。我收到错误非静态成员引用必须是相对于特定对象所以我做错了但我不知道如何使它正确。
class Triedenie_cisla{
public:
Triedenie_cisla(int *poleHodnot, int ddlzka);
int *pole, dlzka;
double bubble_time, selection_time, insert_time, quick_time;
vector<int> mnozina_int;
string vypis_pola();
void BubbleSort_int();
void SelectionSort_int();
void InsertSort_int();
void QuickSort_int();
};
然后在进行排序的函数中,我测量时间并尝试将时间分配给这样的变量
Triedenie_cisla::insert_time = dif;
我做错了什么?感谢
答案 0 :(得分:2)
你需要找一本关于C ++的好书,这些都是基本的东西。
非静态成员引用必须相对于特定对象
表示要修改insert_time
,您必须在类的现有对象上执行此操作:Triedenie_cisla
然后在进行排序的函数中,我测量时间并尝试将时间分配给
Triedenie_cisla::insert_time = dif;
等变量
你应该这样做:
void Triedenie_cisla::BubbleSort_int() {
// ....
insert_time = dif;
//
}
答案 1 :(得分:1)
您必须创建班级的对象。然后,可以分配值。
Triedenie_cisla obj;
obj.insert_time = dif;
否则,编译器假定您要更改静态变量的值,即。 一个为整个类存在一次的变量。要这样做,你必须说明 insert_time是一个静态变量。 例如:
static double insert_time;
答案 2 :(得分:0)
如果我理解得很好,你希望在你自己的排序函数中设置insert_time的值,它们已经是Triedenie_cisla类的一部分。
因此你只需要做
this->insert_time = dif;
甚至
insert_time = dif;
就足够了
答案 3 :(得分:0)
除非是类的静态变量/方法,否则不能仅使用类名调用变量/方法。因此,您的问题的解决方案是:
<强>解决方案-1 强>
首先制作班级的对象:
Triedenie_cisla object_1 = new Triedenie_cisla() ;
使用对象名称调用变量。
object_1.insert_time = dif;
<强>解决方案-2 强>
您也可以在类声明中使用insert_time前面的静态关键字解决此问题:
static double bubble_time, selection_time, insert_time, quick_time;