2015-04-06 30 views
0

我是新來的C++,我有一個項目,其中一個類有一個引用另一個類的形式,我將在下面提到。我只是想了解一個類實際上引用了什麼。對不起,我不會發布我的程序,而只是提供一個例子,因爲我想真正理解對類的引用意味着什麼,而不是顯示如何修復我的代碼的人。C++對類的引用

因此可以說我有兩個類Class_1和Class_2。我需要通過將兩個參數傳遞給Class_1的構造函數來從Class_2調用Class_1。

這是Class_1構造看起來像一個Class_1 CPP文件

Class_1::Class_1(int nRows, int nCols) 
{ 
    m_rows=nRows; 
    m_cols=nCols; 
    m_numSnakesDied=0; 
    display(); 

} 

這是一個要求對我來說,Class_1頭文件在以下方式

Class_1& class_1(); 

聲明Class_2,你可以看到,我需要從Class_1獲取nRows和nCols,當它調用Class_2時。問題是我不明白這是什麼Class_1 & class_1();實際上是指,並且我不確定如何初始化Class_1 s constructor from Class_2的cpp文件。

對不起,如果我的解釋是蹩腳的,英語是我的第三語言。

謝謝。

+0

我不清楚你的問題是什麼。您正在說'Class_1',但發佈的代碼使用'History'。也許發佈明確指出問題的代碼會有所幫助。 – 2015-04-06 03:25:01

+0

我認爲問題是指朋友還是指什麼類的引用?我也不太確定。 – Mohammad 2015-04-06 03:28:01

回答

1

這是有點不清楚你的問題。

您可以使用類似:

Class_1 a; // a is an instance of Class_1 
Class_1& b = a; // b is a reference to an instance of Class_1 (a) 

,使A和B是完全一樣的對象。

如果需要爲參數的構造函數:

Class_1 c(2, 3); // c is an instance of Class_1. 
       // this will initialize c with nRows = 2 and nCols = 3 
Class_1& d = c; // d is a reference to an instance of Class_1 (c) 

至於你的示例代碼:

Class_1& class_1(); 

這意味着class_1是返回到Class_1的實例的引用的函數。因此,也許你想實現類似:

Class_2 { 
public: 
    Class_1& class_1() { 
     return a; // return a reference to an instance of Class_1 (a) 
    } 
private: 
    Class_1 a; // an instance of Class_1 
} 

我建議您發佈更完整的代碼,以便我們可以提供幫助。否則,我們只是猜測你的問題。

編輯 刪除引用的示例,因爲它是不允許的。

+0

'Class_1&e = Class_1(4,5);'是不可能的。對非const的引用不能引用臨時。 – emlai 2015-04-06 07:43:16

+0

謝謝你,你最後的解釋正是我所要求的,對於狡詐感到抱歉。我最終做的是我在Class_1中私下聲明瞭History m_history,然後使用歷史記錄將refference返回給m_history。 – user1335175 2015-04-07 04:26:13