※ 引述《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