2014-04-10 4 views
0

흠 ... Visual Studio 2012를 사용하여이 하나에 난처한 상황이 있습니다. 프로젝트에 단 하나의 오류 만 남았고 테스트를 기다리고 있습니다. 예, C++ 클래스 용이며 충분한 코드를 게시하기를 바랍니다. (AN> writeData는 클래스를 지정해야합니다/구조체/조합/제네릭 형식이 예제에서 포인터와 클래스가 함께 작동하는 방식을 이해하지 못했습니다.

이 줄 포인터의 배열의 요소를 가지고 있었다 이전 프로젝트에서 -의

C2227 왼쪽 :

나는 오류를 얻을 직원 * 포인터 나는 가정)과 그렇게처럼 일 :

Employee* myEmployees[MAX_EMPS]; 
... 
myEmployees[i]->writeData(outputEmployee); 

그래서 나는 직원 *의 벡터를 구현하고, 또한 포인터를 포함한다고 가정 해 봅시다 :

MyVector<Employee*> employeePtrList; 

나는 다음 몇 간접적으로 약간의 단계를하지만 교수 Debry 이것을 클리어 한 수행

Employee* empPtr1 = new HourlyEmployee(EMP1_ID, EMP1_NAME, EMP1_ADDRESS, EMP1_PHONE, EMP1_HOURS, EMP1_WAGE); 
2... 
3... 
4... 

employeePtrList.push_back(empPtr1); 
2... 
3... 
4... 

그런 다음 나중에 프로그램에서이 행이 나에게 오류주고있다 : 내가 가지고있는

employeePtrList.at(i)->writeData(outputEmployee); 

을 여러 가지를 시도해 보았습니다. * (employeePtrList)를 사용하여 재미있게하기 만하면 인텔리 센스 오류가 변경되지만 여전히 동일한 결과가 나타납니다.

C2227 남음> writeData가/struct/union/generi 클래스를 가리켜 야합니다. C 유형

이상형? 내가 왜 잘 모르겠다면 employeePtrLIst가 Employee 포인터라는 것을 이해할 것입니다. 아마도 잘못된 클래스를 찾고있을 것입니다. 아마 MyVector 클래스의 함수를 "가리키는"것이 아닙니다.

감사합니다 정확히 어떻게 MyVector 작품을 모른 채

+2

'employeePtrList.at (i)'는 무엇을 반환합니까? –

+0

이론적으로 묻는다면 Employee 클래스에 대한 포인터를 사용한다고 가정합니다. 실제로는 실행되지 않습니다. 멤버 함수가 존재하는 MyVector 클래스에서 무언가를 반환하도록 폼을 작성하는 방법을 알아야겠습니까? – JimLohse

+0

MyVector는 무엇입니까?> 실제로 .at 함수가있는 벡터입니까? – user632657

답변

0

은, 언뜻 몇 일이 잘못 갈 수 :

.at() 객체에 대한 참조를 반환 할 수 있습니다 (또는 객체의 경우에도 사본) 따라서 . 연산자를 사용해야합니다.

또 다른 가능성은 .at() 유형 Employee*의 반복자를 반환하는 경우, 당신은 구현에 따라 반복자 역 참조 (즉 (*employeePtrList.at(i))->writeData(outputEmployee);) 해야한다는 것입니다.

+1

감사합니다. Qix 당신은 훌륭한 정보를 가지고있었습니다. 나는 그것을 upvote하기에는 너무 새롭다 (부끄럽게 웃어). – JimLohse

+0

Hey @provoutah - 그것이 당신을 도왔다면 대답을 받아들이는 것을 환영한다는 것을 알리게된다! – Qix

+1

지연에 대해 죄송합니다 :) – JimLohse