2013-10-30 51 views
0

下面的代碼是針對三個類的,類一,類二,類三。C++中的一個類中的矩陣

第三類需要兩個向量,第一個向量包含一個實例,第二個向量包含兩個實例。

我想通過三中的方法得到一個二維矩陣,這個矩陣將有兩個相等的索引,每個索引的大小都是一個實例的向量的大小。

我不知道在哪裏聲明這個矩陣,以及如何初始化它。

我將提供的碼工作正常之前,我聲明矩陣,則我將呈現哪個不工作,併產生錯誤消息我的多次嘗試的一個例子。

這裏是代碼聲明矩陣(正常工作)

#include<iostream> 
#include<vector> 
#include <stdlib.h> 
using namespace std; 

const unsigned int N = 5; 

class One 
{ 
private: 
    unsigned int id;         
public: 
    unsigned int get_id(){return id;}; 
    void set_id(unsigned int value) {id = value;}; 
    One(unsigned int init_val = 0): id(init_val) {}; // constructor 
    ~One() {};           // destructor 
}; 





class Two 
{ 
    private: 
    One first_one;     
    One second_one;     
    unsigned int rank;      
    public: 
    unsigned int get_rank() {return rank;}; 
    void set_rank(unsigned int value) {rank = value;}; 
    unsigned int get_One_1(){return first_one.get_id();}; 
    unsigned int get_One_2(){return second_one.get_id();}; 

    Two(const One& One_1 = 0, const One& One_2 =0 , unsigned int init_rank = 0) 
    : first_one(One_1), second_one(One_2), rank(init_rank) 
    { 
    } 

    ~Two() {} ; // destructor 

}; 



class Three 
{ 
private: 
    std::vector<One> ones; 
    std::vector<Two> twos;  


public: 
    Three(vector<One>& one_vector, vector<Two>& two_vector) 
    : ones(one_vector), twos(two_vector) 
    { 
    } 

    ~Three() {}; 

    vector<One> get_ones(){return ones;}; 
    vector<Two> get_twos(){return twos;}; 

    void set_ones(vector<One> vector_1_value) {ones = vector_1_value;}; 
    void set_twos(vector<Two> vector_2_value) {twos = vector_2_value;};    

}; 



int main() 
{ 
cout<< "Hello, This is a draft for classes"<< endl; 
vector<One> elements(5); 
cout<<elements[1].get_id()<<endl; 

vector<Two> members(10); 
cout<<members[8].get_One_1()<<endl; 

Three item(elements, members); 
cout<<item.get_ones()[3].get_id() << endl; 

return 0; 
} 

現在我宣佈三產矩陣的方法之前,該方法的名字是get_Mat()這裏是代碼:

#include<iostream> 
#include<vector> 
#include <stdlib.h> 
using namespace std; 

const unsigned int N = 5; 

class One 
{ 
private: 
    unsigned int id;         
public: 
    unsigned int get_id(){return id;}; 
    void set_id(unsigned int value) {id = value;}; 
    One(unsigned int init_val = 0): id(init_val) {}; // constructor 
    ~One() {};           // destructor 
}; 





class Two 
{ 
    private: 
    One first_one;     
    One second_one;     
    unsigned int rank;      
    public: 
    unsigned int get_rank() {return rank;}; 
    void set_rank(unsigned int value) {rank = value;}; 
    unsigned int get_One_1(){return first_one.get_id();}; 
    unsigned int get_One_2(){return second_one.get_id();}; 

    Two(const One& One_1 = 0, const One& One_2 =0 , unsigned int init_rank = 0) 
    : first_one(One_1), second_one(One_2), rank(init_rank) 
    { 
    } 

    ~Two() {} ; // destructor 

}; 



class Three 
{ 
private: 
    std::vector<One> ones; 
    std::vector<Two> twos;  


public: 
    Three(vector<One>& one_vector, vector<Two>& two_vector) 
    : ones(one_vector), twos(two_vector) 
    { 
    } 

    ~Three() {}; 

    vector<One> get_ones(){return ones;}; 
    vector<Two> get_twos(){return twos;}; 

    void set_ones(vector<One> vector_1_value) {ones = vector_1_value;}; 
    void set_twos(vector<Two> vector_2_value) {twos = vector_2_value;}; 

    unsigned int get_Mat() { 
         unsigned int mat[ones.size()][ones.size()]; 
         for(unsigned int i = 0; i < ones.size(); ++i) 
           for(unsigned int j = 0; j < ones.size(); ++j) 
            mat[i][j] = 1; 
          return mat;}   

}; 



int main() 
{ 
cout<< "Hello, This is a draft for classes"<< endl; 
vector<One> elements(5); 
cout<<elements[1].get_id()<<endl; 

vector<Two> members(10); 
cout<<members[8].get_One_1()<<endl; 

Three item(elements, members); 
cout<<item.get_ones()[3].get_id() << endl; 

return 0; 
} 

我會很感激,如果你能幫助我找到一個方法來產生通過這個方法矩陣三類。

謝謝。

+0

你應該確保你沒有聯合國需要空行在您發佈的代碼中(即連續4或5個空行),因爲這會讓您的代碼難以閱讀。此外,您的縮進工作。另外,請確保您指定了*確切*錯誤信息。 – crashmstr

+0

感謝您的建議。 – mazlor

回答