2013-03-11 6 views
0

검출되지 다음 오류 :C++ 순수 가상 함수는 내가 다음과 같은 클래스 구조를 서브 클래스

error: no matching function for call to ‘MySubClass::exportData(QString)’ 
note: candidate is: virtual ExportData MySubClass::exportData() 
note: candidate expects 0 arguments, 1 provided 

내가 잘못한 것을 보지 못했습니다. 왜 이런 일이 발생합니까?

+0

이 두 함수는 완전히 다른 작업을 수행합니다. 하나는 파일로 데이터를 내보내고 다른 하나는 내보낼 데이터를 생성합니다. 그들에게 다른 설명 적 이름을 주시겠습니까? (성능과 응답 성이 무엇이든 의미하는 경우 파일 io는 비동기 적이어야합니다. 즉, io 함수는 이름 유형이 가장 적어야하고 심지어는 비동기 기본 요소를 노출해야합니다. 이러한 함수가 서로 재정의되지 않는 매우 중요한 방식입니다.) – Yakk

답변

3

내가 첫 번째 가상 함수가 두 번째 기능을 숨 깁니다 의심, 당신은 당신의 서브 클래스에서이 작업을 수행해야합니다

using MyBase::exportData; 

하위 클래스에이 기능이 명시 적으로 볼 만들기.

Live Example

+0

그러나 2 개의 함수는 다른 매개 변수를 가지고 있으므로 컴파일러가 두 개의 별개의 함수로 볼 수 있습니다. 아니면 내가 틀렸어? – goocreations

+0

@goocreations 네, 그것들을 볼 것입니다,하지만 당신이 Base로부터 두번 파생 된 것을 본다면, 당신은 당신의 과부하 중 하나를 구현할 것입니다, 당신은 ** 다른 것을 숨기고 있습니다, 당신은 그것을 범위에 가져와야합니다 'using' 문과 함께 컴파일러가 다른 함수도 존재한다는 것을 알려줍니다. –

+0

그래서 다음과 같은 오류가 발생했습니다 : 오류 : '가상 bool MyBase :: exportData (QString)'에 액세스 할 수 없습니다. – goocreations

1

MySubClassvirtual ExportData exportData()를 선언하면 virtual bool exportData(QString filepath)을 숨기고 있습니다. using 선언을 사용하여 범위에 가져와야합니다.

class MySubClass : public MyClass 
{ 
    public: 
     using MyBase::exportData; 
     virtual ExportData exportData(){//some implementation} 
};