왜 컴파일되지 않습니까?
오류 C2660 : 'Concrete :: WriteLine': 함수가 1 개의 인수를 취하지 않습니다.
줄을 추가하면 알고 있습니다 :
// AbstractBase :: WriteLine;
작동하지만 그 이유를 이해하지 못합니다.C++ 순수 가상 함수 상속 (같은 서명)
#include "iostream"
class AbstractBase
{
public:
virtual void WriteLine() = 0;
virtual void WriteLine(int i)
{
std::cout<<"AbstractBase"<<std::endl;
}
};
class Concrete : public AbstractBase
{
public:
//using AbstractBase::WriteLine;
virtual void WriteLine()
{
std::cout<<"Concrete Sub Class"<<std::endl;
}
};
int main()
{
Concrete ff;
ff.WriteLine();
ff.WriteLine(1);
return 0;
}
누군가 여기서 일어날 일을 설명해 줄 수 있습니까? 고맙습니다
이 동작은 C++의 standart에서 정의 된 행동 인 경우 누구나 알고 있습니까. C++ 스탠드 아트에 언급되어 있습니까? 아니면 그냥 일종의 컴파일러 동작입니까?
당신이 가지고있는 것은 *** 네임 스페이스 선언 ***을 사용하고 *** 네임 스페이스 지시문 ***을 사용하는 것이 아니라 모두 동일하지 않습니다. –
@Als : 단지 _using 선언 ._ 관련된 네임 스페이스가 없습니다. –
@MikeSeymour : 음 ... 네, 맞습니다. 키워드를 검색하면 차이가 발생하기 때문에 키워드로 이동했습니다. –