2014-11-21 2 views
2

CStringArray를 클래스에 전달하려고하면 'CObject'클래스에 선언 된 전용 멤버에 액세스 할 수 없다는 이상한 오류가 발생합니다. 기능 나는 조각으로 그것을 부술 작성했습니다. 전체 함수 코드를 주석 처리 했으므로 문제가 객체 자체의 전달 내에 있다는 것을 알았으므로 잘못된 방식으로 처리하고 있다고 가정합니다. 여기CStringArray를 전달하려고하면 'CObject'클래스에 선언 된 전용 멤버에 액세스 할 수 없습니다.

class CSDI1View : public CView 
{ 
// Operations 
public: 
    void CStringArrayHandler(CStringArray arr); // <<<<=================== 

그리고 다음은

void CSDI1View::CStringArrayHandler(CStringArray arr) 
{ 
    // Left out code here since it is not the cause of the problem 
} 

내 헤더 파일에있는 함수의 선언입니다 : 여기
// If successful, read file into CStringArray 
    CString strLine; 
    CStringArray lines; 
    while (theFile.ReadString(strLine)) 
    { 
     lines.Add(strLine); 
    } 

    // Close the file, don't need it anymore 
    theFile.Close(); 

    // Break up the string array and separate it into data 
    CStringArrayHandler(lines); 

내 CStringArrayHandler 기능입니다 : 여기

내 코드입니다 내가 받고있는 오류의 전문은 다음과 같습니다.

오류 1 오류 C2248 : 'CObject :: CObject': 'CObject'c : \ program files (x86) \ microsoft visual studio 12.0 \ vc \ atlmfc \ include \ afxcoll.h에 선언 된 개인 멤버에 액세스 할 수 없습니다. 590 1> SDI-1

+0

참조로 CStringArrayHandler에 배열을 전달해보십시오. – user1793036

답변

3

당신은 값으로 CStringArray arr을 통과, 그래서 CStringArray의 복사 생성자에 액세스 할 수 있어야합니다. CStringArray 복사를 금지 CObject에서 상속 때문에하지만,하지 (즉 당신이 실제로 완전히 여기에 붙여 넣기하지 않은 컴파일러 오류 메시지가, 말하는거야)

이 솔루션은 참조로 arr을 전달하는 것입니다 :

void CStringArrayHandler(const CStringArray& arr); 
+0

게시 한 오류의 텍스트는 모두 VS2013이 제공 한 것입니다. 고마워, 내가 이것을 시도 할게 – JayB

+0

@ user134788 어쩌면, 나는 VS를 손에 들고 있지 않지만, 적어도 접근 할 수없는 생성자 서명을 출력해야한다는 인상 아래에 있었다. 즉, 'CObject (const CObject &)' –

+0

이것은 효과적이다. 감사 – JayB

관련 문제