2014-11-02 5 views
0

나는 이것이 가능하면 잘 모르겠다. C++의 초보자이다. 함수에 전달 된 객체에서 동적 2D 배열에 액세스 할 수 있는지 알고 싶습니다.C++의 함수에 전달되는 객체에서 동적 2D 배열에 액세스하려면 어떻게합니까?

클래스 A :

class A { 
public: 

    A(int length, int width) { 
     // initializes the 2d array 
    } 

    int** getArray() { return array2d;} 

    int getLength() { return length;} 

    int getWidth() { return width;} 

private: 

    int** array2d; 
    int length, width; 
}; 

클래스 B :

#include "A.h" 
class B { 
public: 

    B() {} 

    void print(A* a) { 

     int** temp = a->getArray(); // ERROR HERE 

     for (int i = 0; i < a->getLength(); i++) { 
      for (int j = 0; j < a->getWidth(); j++) 
       cout << temp[i][j] << endl; 
     } 
    } 

private: 

    int** array2d; 
}; 

하여 Main.cpp :이 오류가 계속

int main() { 
    A a = new A(15,15); 
    B b = new B(); 

    b->print(a); 
} 

: Error 13 error C2086: 'int **A::array2d' : redefinition 여기에 간단한 코드입니다.

2D 배열을 올바르게 전달하는지 잘 모르겠습니다. 나는 모든 제안에 개방적이다. 아무도이 문제를 해결하는 방법을 말해 줄래? 감사.

추가 설명이 필요한 경우 알려 주시기 바랍니다.

+0

파일의 전체 소스는 무엇입니까? –

+0

@ Smith_61 전체 소스 란 무엇입니까? 모든 소스 코드의 의미가 너무 복잡하고 길기 때문에 위의 코드에서 예제를 단순화했습니다. – Alias

+0

오류를 복제하는 데 필요한 전체 코드와 같습니다. 우리가 볼 수없는 것을 디버깅 할 수는 없습니다. –

답변

1

좋아, 내가 문제를 찾은 것 같아, 오류 번호는 당신이 뭔가를 재정의하는 것을 제안하고 그것이 모두 동일한 이름을 사용하고 있기 때문에 array2d의 이름이라고 생각한다. 희망을 갖고 이름을 변경하면 도움이 될 것입니다.
그리고 void print(A* a)에서 void print(A* objA)까지 매개 변수 이름 a을 변경하는 것이 좋습니다. 여기에 문제가있을 수 있습니다.