operator<<
을 사용하는 간단한 클래스를 만들고 있습니다. 서로 다른 (그러나 이미 알려진) 데이터 유형을 가진 두 개의 병렬 데이터 배열을 저장합니다. 배열을 만들 것 연산자 오버로드 <<
MyInstance << "First text" << 1 << "Second text" << 2 << "Third text" << 3;
은 다음과 같이 보일 : 나는 확실히 모든 것을 확인하기 위해 입력을 확인하는 로직을 처리 할 수
StringArray: | "First text" | "Second text" | "Third text" |
IntArray: | 1 | 2 | 3 |
아이디어는 최종 인터페이스는 다음과 같이 보일 것입니다 일치하지만, operator<<
의 기술적 세부 사항과 혼동스러워합니다.
내가 선택한 자습서에서는 std::ostream&
반환 형식의 친구 함수로 오버로드하려고하지만 클래스는 스트림과 관련이 없습니다. 반환 유형으로 void
을 사용했지만 컴파일 오류가 발생했습니다. 결국 클래스에 대한 참조를 반환하는 것으로 끝났지 만, 왜 그것이 작동하는지 잘 모르겠습니다. 여기
class MyClass
{
public:
MyClass& operator<<(std::string StringData)
{
std::cout << "In string operator<< with " << StringData << "." << std::endl;
return *this; // Why am I returning a reference to the class...?
}
MyClass& operator<<(int IntData)
{
std::cout << "In int operator<< with " << IntData << "." << std::endl;
return *this;
}
};
int main()
{
MyClass MyInstance;
MyInstance << "First text" << 1 << "Second text" << 2 << "Third text" << 3;
return 0;
}
, 원치 않는 것입니다 같은 것을 할 수 있습니다 내 클래스의 사용자 : 나는 교류를 시행 할 수있는 일
MyInstance << "First text" << 1 << 2 << "Second text" << "Third text" << 3;
입력의 본질?
귀하의 코멘트에 대해 귀하의 클래스에 대한 참조를 되돌려 주셔서 '<<'작업을 함께 할 수 있도록해야합니다. – GWW