精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《beatitude (black culture)》之銘言: : 我想在class內宣告動態的char陣列 一維的可以 : 不知道為什麼二維的就不可以了 : 以下是錯誤訊息: : C:\CPP暫存檔\test.cpp In constructor `test::test(int)': : C:\CPP暫存檔\test.cpp `n' cannot appear in a constant-expression : 請問一下問題大概是在哪裡? : 感謝 : code : ------------------------ : #include <iostream> : class test : { : public: : test(int n) : { : chess = new char[n][n]; : } : private: : char *chess[]; : }; : int main() : { : test test1(10); : system("pause"); : return 0; : } C++的作法 #include <iostream> #include <stdlib.h> #include <vector> using namespace std; class Array2D { public: Array2D(int n); ~Array2D(); vector<int> operator[](int x); private: vector<vector<int> > chess; }; Array2D::Array2D(int n) { chess = vector<vector<int> >(n,vector<int>(n)); //test data 你可以全部都填0,以保證必有初值 for(int ix=0 ; ix<n ; ix++) for(int iy=0 ; iy<n ; iy++) chess[ix][iy] = ix*n+iy; //end test data } vector<int> Array2D::operator[](int index) { return chess[index]; } Array2D::~Array2D() { } int main(int argc, char *argv[]) { Array2D a2d(10); for(int ix=0 ; ix<10 ; ix++) { for(int iy=0 ; iy<10 ; iy++) cout<<a2d[ix][iy]<<" "; cout<<endl; } system("PAUSE"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.132.23.74