2012-11-30 85 views
0

我想製作一個動態分配的二維數組,但我真的不知道該怎麼做。我搜索谷歌和一切,但只是不能使它的工作。到目前爲止我的代碼是:C++ dynamic allocatinon 2d array

postaH.h:

#ifndef POSTAHH 
#define POSTAHH 
#include <vector> 
#include <string> 
#include <iostream> 
#include "feladoH.h" 

using namespace std; 

class postaH : public feladoH{ 
    private: 
      int szertekek[7]; 
      string szovegek[7]; 
      int a,b; 
      int** szamosszesit; 
      string d,c; 
      string** szovosszesit; 
    public: 
     postaH(); 
     postaH(int szertekek[7], string szovegek[7],int,int,string,string); 
     ~postaH(); 
     postaH(postaH& pos); 
     int getSzertek(); 
     string getSzovegek(); 
     void setSzertek(int ir,int hsz,int szulev, int cir, int chsz,int surg, int suly); 
     void setSzovegek(string nev,string varos,string utca,string cnev,string cvaros,string cutca,string cstipus); 
     void hozzaad(); 
     void fajlbakiir(); 
}; 
#endif 

postaS.cpp:

#include <string> 
#include <iostream> 
#include <fstream> 
#include "postaH.h" 

int seged = 0; 

using namespace std; 

postaH::postaH(){ 
      int szertekek[7]; 
      string szovegek[7];  
      int** szamosszesit; 
      string** szovosszesit; 
    } 

postaH::postaH(int szertekek[7], string szovegek[7],int aa,int bb,string dd,string cc)  : a(aa),b(bb),d(dd),c(cc){ 
    this->szertekek[7] = szertekek[7]; 
    this->szovegek[7] = szovegek[7]; 
    szamosszesit = new int*[a]; 
for (int i = 0; i<a; i++){ 
     szamosszesit[i] = new int[b]; 
    } 
    for (int i = 0; i<a; i++){ 
    for (int j = 0; j<b; j++){ 
     szamosszesit[i][j] = 0; 
    } 
szovosszesit = new string*[d]; 
for (int i = 0; i<d; i++){ 
    szovosszesit[i] = new string[d]; 
} 
for (int i = 0; i<d; i++){ 
    for (int j = 0; j<c; j++){ 
     szovosszesit[i][j] = 0; 
     } 
} 

postaH::~postaH(){ 
       delete [] szertekek; 
       delete [] szovegek; 
       for (int i = 0; i<a; i++){ 
        delete [] szamosszesit[i]; 
        } 
        delete [] szamosszesit; 
      for (int i = 0; i<d; i++){ 
        delete [] szovosszesit[i]; 
        } 
         delete [] szovosszesit; 
} 

postaH::postaH(postaH& pos){ 
    this->szertekek[7] = pos.getSzertek(); 
    this->szovegek[7] = pos.getSzovegek(); 
    } 

int postaH::getSzertek(){ 
return szertekek[7]; 
} 

std::string postaH::getSzovegek(){ 
return szovegek[7];   
} 

void postaH::setSzertek(int ir,int hsz,int szulev, int cir, int chsz,int surg, int suly){ 
this->szertekek[0] = ir; 
this->szertekek[1] = hsz; 
this->szertekek[2] = szulev; 
this->szertekek[3] = cir; 
this->szertekek[4] = chsz; 
this->szertekek[5] = surg; 
this->szertekek[6] = suly; 
} 

void postaH::setSzovegek(string nev,string varos,string utca,string cnev,string cvaros,string cutca,string cstipus){ 
this->szovegek[0] = nev; 
this->szovegek[1] = varos; 
this->szovegek[2] = utca; 
this->szovegek[3] = cnev; 
this->szovegek[4] = cvaros; 
this->szovegek[5] = cutca; 
this->szovegek[6] = cstipus; 
} 

void postaH::hozzaad(){ 

} 

void postaH::fajlbakiir(){ 
ofstream kezb; 
kezb.open ("kezbesitett.txt", ios::app); 
for(int i=0;i<7;i++){ 
     kezb << szovegek[i] << ","; 
     kezb << szertekek[i] << ","; 
     } 
kezb << "\n"; 
kezb.close(); 
} 

所以我的問題基本上是我應該怎麼做在頭文件中的聲明,以及構造函數,析構函數在cpp文件中工作?

+1

從一開始就嘗試編寫「英文」代碼,那些匈牙利函數和變量名稱不是很可讀。 – Cartesius00

+0

基本上我想製作2個二維數組,把一些存儲在其中的數據。用戶給出的數據槽控制檯,它存儲在szertekek,szovegek數組中,我想將這些數據存儲在二維數組中(szovosszesit,szamosszesit),這樣我就可以打印最後10個存儲的數據。 – JohnnnnnY

+1

可以從函數和變量名稱中收集很多上下文。然而,由於普通聽衆無法讀懂匈牙利語的情況, –

回答

2

一般來說,如果要創建一個數組,最好是使用適合於該任務的容器:

  • std::vector物品的順序容器。
  • std::deque對於需要從任一端進行更新的項目的順序容器。
  • std::list對於將從序列中的任意點更新的順序容器。
+0

我的順序定義可能不同於數學。我用它來描述你可以很容易地從[0..n]列舉出來。 –