몇 가지 가능한 입력 (i, c, l, v ..)이있는 간단한 프로그램을 작성했습니다. 첫 번째 입력은 "i m n"이며, 여기서 m 및 n은 정수 값입니다. 이 명령은 m 행과 n col로 구성된 2D 배열을 생성합니다. 여기 내 코드는 다음과 같습니다.생성자가 작동하지 않습니다 "오류 : '(<class name>) (int &, int &)에 대한 호출과 일치하지 않습니다."
class myarray
{
char** grid;
int dimX,dimY;
public:
myarray(){grid=0;}
myarray(int m,int n) {grid = new char* [m]; for(int i=0;i<m;i++) {grid[i]=new char [n];} dimX=m; dimY=n;}
~myarray(){for(int i = 0; i < dimX; ++i) {delete[] grid[i];} delete[] grid;}
char** fetcharray(){return grid;}
int main()
{
srand(time(NULL));
bool check(true),arrayinitialized(false);
while(check)
{
char a; //a-firstinp;
int m,n; //m,n-grid size
cin>>a;
myarray c;
switch(a)
{
case 'i':
case 'I': {cin>>m>>n;
**c(m,n);**
arrayinitialized=true;
break;}
case ...:...
default:{cout<<"Invalid input! Try again: "; break;}
그러나 'i'의 경우 오류가 발생합니다. ...; c (m, n); "오류 : '(myarray) (int &, int &)'에 대한 호출과 일치하지 않습니다." " 변수 myarray c를 선언 할 때; 로컬 변수 (myarray c (m, n))의 경우 모든 것이 잘 작동합니다. 그러나 변수 c를 다른 경우에서 액세스 할 수있게하려면 main() 함수 전체에서 사용할 수 있어야합니다 (위 코드 에서처럼). 누구나 잘못 알고 있고 어떻게 해결할 수 있습니까? 미리 감사드립니다.
'char **'대신'vector>'를 사용하면 많은 두통을 줄일 수 있습니다. –
aschepler