2014-02-10 61 views
-1

你好,我無法找到如何將值賦給我在我的類中使用的變量。我得到錯誤非靜態成員參考必須是相對於一個特定的對象所以我做錯了什麼,但我不能確定如何使它正確。在C++類中賦值變量

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

必須使用對象名稱而不是類名稱。 – icbytes

回答

2

你需要找到在C++一本好書,這些都是基本的東西。

非靜態成員引用必須是相對於特定對象

意味着修改insert_time你必須這樣做類的現有對象:Triedenie_cisla

的功能,使各種

然後,我測量時間,並試圖將時間分配給那樣的變量Triedenie_cisla::insert_time = dif;

你應該那樣做:

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

你必須創建你的類的一個對象。然後,分配值是可能的。

Triedenie_cisla obj; 
obj.insert_time = dif; 

否則,編譯器假定你想要改變一個靜態變量的值,即。 一個爲整個班級存在的變量。爲此,您必須聲明
insert_time是一個靜態變量。 例如:

static double insert_time; 
0

如果我理解得很好,你想設置自己的排序功能,已經是類Triedenie_cisla的一部分內insert_time的價值。

因此,你只需要做

this->insert_time = dif; 

甚至

insert_time = dif; 

就足以

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; 
+0

解決方案2會更好,因爲我不需要創建對象,但是當我使用靜態時出現此錯誤1> main.obj:錯誤LNK2001:無法解析的外部符號「public:static double Triedenie_cisla :: bubble_cas」(?bubble_cas @ Triedenie_cisla @@·NA) – user3292179