【问题标题】:Assign value of variable in class C++在 C++ 类中为变量赋值
【发布时间】:2014-02-10 09:18:32
【问题描述】:

您好,我不知道如何为我在课堂上使用的变量赋值。我收到错误nonstatic member reference must be relative to a specific object所以我做错了,但我不知道如何让它正确。

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;

我做错了什么?谢谢

【问题讨论】:

  • 您必须使用对象名而不是类名。

标签: c++ class object reference


【解决方案1】:

你需要找到一本关于 C++ 的好书,这些都是基本的东西。

非静态成员引用必须是相对于特定对象的

表示要修改insert_time,您必须在现有的类对象上进行:Triedenie_cisla

然后在进行排序的函数中,我测量时间并尝试将时间分配给像 Triedenie_cisla::insert_time = dif; 这样的变量

你应该这样做:

void Triedenie_cisla::BubbleSort_int() {
   // ....
   insert_time = dif;
   //
}

【讨论】:

    【解决方案2】:

    你必须创建你的类的一个对象。然后,赋值是可能的。

    Triedenie_cisla obj;
    obj.insert_time = dif;
    

    否则,编译器假定您要更改静态变量的值,即。 整个类只存在一次的变量。为此,您必须声明
    那 insert_time 是一个静态变量。 例如:

    static double insert_time;
    

    【讨论】:

      【解决方案3】:

      如果我理解得很好,您希望在您自己的排序函数中设置 insert_time 的值,该函数已经是 Triedenie_cisla 类的一部分。

      所以你只需要这样做

      this->insert_time = dif; 
      

      甚至

      insert_time = dif; 
      

      足够了

      【讨论】:

        【解决方案4】:

        你不能只使用类名来调用变量/方法,除非它是类的静态变量/方法。因此,您的问题的解决方案是:

        解决方案 1

        首先为你的类创建一个对象:

        Triedenie_cisla object_1 = new Triedenie_cisla() ;
        

        使用对象名称调用变量。

        object_1.insert_time = dif;
        

        解决方案 2

        你也可以在类声明的insert_time前面使用static关键字来解决这个问题:

        static  double bubble_time, selection_time, insert_time, quick_time;
        

        【讨论】:

        • 解决方案 2 会更好,因为我不需要创建对象,但是当我使用 static 时出现此错误 1>main.obj : error LNK2001: unresolved external symbol "public: static double Triedenie_cisla ::bubble_cas" (?bubble_cas@Triedenie_cisla@@2NA)
        猜你喜欢
        • 2013-03-16
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 2016-01-24
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多