다음 코드를 고려하십시오정의 연산자 << 내부 클래스
class MyClass
{
template <typename Datatype>
friend MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData);
// ...
};
template <typename Datatype>
MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
차라리 친구 기능으로보다 operator<<
내부 클래스를 정의 할 수 있습니까? 이런 식으로 뭔가는 : 그것은 두 개의 인수를 허용하기 때문에
class MyClass
{
// ...
public:
template <typename Datatype>
MyCLass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
};
위의 코드는 컴파일 오류를 생성합니다. MyClassReference
인수를 제거하면 오류가 수정되지만 해당 인수를 사용하는 코드가 있습니다. MyClassReference
은 *this
과 동일합니까?
가의''DataType' 형의 인수를 취하는 템플릿을 MyClass' 있습니까? –
@ David 's No; '데이터 유형'은 데모 목적으로 실제 유형 대신 사용되었습니다. – Maxpm
@ Maxx : 그렇다면 왜 '템플릿'을 정의에 추가 했습니까? 친구 함수를 선언하고 있지만 다른 짐승과 같은 친구가 아닌 템플릿을 정의합니다. –