2009-05-11 12 views
0

以下は、オブジェクトのリストを別のクラスに渡す方法を学ぶために書いたサンプルプログラムです。私は以下の問題について話します。オブジェクトのリストを別のクラスに渡すときの問題C++

#include <iostream> 
#include <vector> 
using namespace std; 

class Integer_Class 
{ 
int var; 
public: 
Integer_Class(const int& varin) : var(varin) {} 
int get_var() { return var; } 
}; 

class Contains_List 
{ 
typedef Integer_Class* Integer_Class_Star; 
Integer_Class_Star list; 
public: 
Contains_List(const Integer_Class_Star& listin) : list(listin) {} 
Integer_Class* get_list() { return list; } 
}; 

int main (int argc, char * const argv[]) 
{ 
// Create a vector to contain a list of integers. 
vector<Integer_Class> list; 
for(int i = 0; i < 10; i++) 
{ 
    Integer_Class temp_int(i); 
    list.push_back(temp_int); 
} 

ここでエラーが発生します。誰かが2番目のクラスの定義と下のコードを見て、私が間違っていることにいくつかの光を当ててください。いつものように、ありがとう!

// Import this list as an object into another object. 
Contains_List final(list); 

// Output the elements of the list by accessing it through the secondary object. 
for(int i = 0; i < 10; i++) 
{ 
    cout << final.get_list()[i].get_var(); 
} 

return 0; 
} 
+1

どのようなエラーが発生しますか? –

答えて

2

あなたが得ているエラーの種類を言及していないが、あなたのコードを1つの非常に明白な問題は、あなたがそれを送信しているパラメータ(list)がある一方でContains_ListのコンストラクタがInteger_Classへのポインタを期待していることですタイプvector<Integer_Class>です。

ベクトルは配列と同じではないため、ベクトルをその型にポインタとして渡すことはできません。 vectorへのベクトルまたはポインタ/参照を受け入れるようにコンストラクタを変更するか、問題の原因となっているコードを変更して、配列へのポインタを送ります。

0

「Contains_List」コンストラクタは、あなたが「ベクトル」タイプのものであると「リスト」を宣言し、まだあなたは「Contians_List」コンストラクタに渡し「Integer_Class *」に

をとります。 'Contains_List'クラスを変更して、Integer_List配列ではなくベクトルを保持するようにしてください。 2つは交換できません。

あなたが望むのであれば、ベクトルをInteger_Listの配列に変更することもできます。

関連する問題