반복기 오버로드 멤버 선택 대 간접 연산자

조나단 미

그래서 Minimal 을 만드는 데 관심이 있습니다. 완전하고 검증 가능한 예iterator 여기 에 장난감을 만들었습니다 (완벽하지 않다는 것을 알고 있습니다. 질문을하기위한 목적 일뿐입니다).

class foo : public iterator<input_iterator_tag, string> {
    string _foo;
    static const size_t _size = 13;
public:
    const string& operator*() { return _foo; }
    const foo& operator++() {
        _foo += '*';
        return *this;
    }
    const foo operator++(int) { 
        auto result = *this;
        _foo += '*';
        return result;
    }
    bool operator==(const foo& rhs) { return _foo.empty() != rhs._foo.empty() && _foo.size() % _size == rhs._foo.size() % _size; }
    bool operator!=(const foo& rhs) { return !operator==(rhs); }
};

InputIterator 가 멤버 선택 연산자를 정의해야 한다는 것을 읽었습니다 . 간접 연산자는 의미가 있지만 멤버 선택 연산자가 여기에서 혼란 스럽습니다. 멤버 선택 연산자는 어떻게 구현 foo됩니까?

다니엘 셰플러
const string* operator->() const { return &_foo; }

사용 예 :

foo i;
++i;
assert(i->length() == 1);

이것이 작동하는 방식은 컴파일러가 operator->반환 유형이 원시 포인터가 될 때까지 반복 호출을 생성 한 다음 (이 경우를 한 번만 호출 foo::operator->) 해당 포인터에서 일반 멤버 선택 작업을 수행하는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

비 멤버 함수로 C ++ 접미사 / 접두사 연산자 오버로드

분류에서Dev

멤버 함수 대 연산자 오버로딩

분류에서Dev

오버로드 된 const 멤버 함수 및 멤버 연산자에 대한 포인터 명확화

분류에서Dev

C ++ 연결 목록 반복 멤버 액세스 연산자

분류에서Dev

Kotlin의 MutableList 멤버에 대한 인덱스 액세스 연산자 오버로드

분류에서Dev

멤버 또는 동반자 함수로만 작동하는 중첩 구조체에 대한 연산자 오버로딩

분류에서Dev

C ++에서 오버로드 된 멤버 액세스 연산자를 임시로 반환합니다.

분류에서Dev

기존 클래스에 대한 Xtend 연산자 오버로딩

분류에서Dev

libstdc ++가 반복기의 이진 연산자에 대해 <L, R> 및 <LR> 오버로드를 모두 구현하는 이유는 무엇입니까?

분류에서Dev

데이터 멤버, 생성자 및 연산자가 오버로드 된 추상 기본 클래스

분류에서Dev

Mvc의 사용자 지정 멤버십 공급자 대 기본 멤버십 proider. 무엇을 선택해야합니까?

분류에서Dev

std :: list에 대한 오버로드 된 대괄호 연산자

분류에서Dev

C ++ toString을 오버로드 된 출력 연산자로 대체

분류에서Dev

실수 리터럴에 대해 컴파일러에서 암시 적 연산자 오버로드를 선택하는 방법

분류에서Dev

오버로드 연산자 []

분류에서Dev

함수에 대한 C ++ 연산자 오버로드

분류에서Dev

분수 유형에 대한 연산자 <, == 오버로드

분류에서Dev

파생 클래스에 대한 연산자 오버로드

분류에서Dev

행렬에 대한 * 연산자 오버로드 시도

분류에서Dev

클래스 데이터에 대한 오버로드 + 연산자

분류에서Dev

C ++의 int 및 char에 대한 오버로드 연산자

분류에서Dev

mystring 클래스에 대한 오버로드 배열 연산자

분류에서Dev

구조체에 대한 연산자 오버로드

분류에서Dev

스칼라의 기본 숫자 유형에 대한 연산자를 오버로드 할 수 있습니까?

분류에서Dev

덜 오버로드 된 후 연산자가 반대 부울 값을 반환합니다.

분류에서Dev

열거 형의 복합 할당 연산자에 대한 연산자 오버로딩

분류에서Dev

STL-할당 연산자 대`할당 '멤버 함수

분류에서Dev

개체 멤버에 대한 간접 참조는 powershell입니다.

분류에서Dev

날짜 / 시간 선택기가 제대로 반복되지 않음

Related 관련 기사

  1. 1

    비 멤버 함수로 C ++ 접미사 / 접두사 연산자 오버로드

  2. 2

    멤버 함수 대 연산자 오버로딩

  3. 3

    오버로드 된 const 멤버 함수 및 멤버 연산자에 대한 포인터 명확화

  4. 4

    C ++ 연결 목록 반복 멤버 액세스 연산자

  5. 5

    Kotlin의 MutableList 멤버에 대한 인덱스 액세스 연산자 오버로드

  6. 6

    멤버 또는 동반자 함수로만 작동하는 중첩 구조체에 대한 연산자 오버로딩

  7. 7

    C ++에서 오버로드 된 멤버 액세스 연산자를 임시로 반환합니다.

  8. 8

    기존 클래스에 대한 Xtend 연산자 오버로딩

  9. 9

    libstdc ++가 반복기의 이진 연산자에 대해 <L, R> 및 <LR> 오버로드를 모두 구현하는 이유는 무엇입니까?

  10. 10

    데이터 멤버, 생성자 및 연산자가 오버로드 된 추상 기본 클래스

  11. 11

    Mvc의 사용자 지정 멤버십 공급자 대 기본 멤버십 proider. 무엇을 선택해야합니까?

  12. 12

    std :: list에 대한 오버로드 된 대괄호 연산자

  13. 13

    C ++ toString을 오버로드 된 출력 연산자로 대체

  14. 14

    실수 리터럴에 대해 컴파일러에서 암시 적 연산자 오버로드를 선택하는 방법

  15. 15

    오버로드 연산자 []

  16. 16

    함수에 대한 C ++ 연산자 오버로드

  17. 17

    분수 유형에 대한 연산자 <, == 오버로드

  18. 18

    파생 클래스에 대한 연산자 오버로드

  19. 19

    행렬에 대한 * 연산자 오버로드 시도

  20. 20

    클래스 데이터에 대한 오버로드 + 연산자

  21. 21

    C ++의 int 및 char에 대한 오버로드 연산자

  22. 22

    mystring 클래스에 대한 오버로드 배열 연산자

  23. 23

    구조체에 대한 연산자 오버로드

  24. 24

    스칼라의 기본 숫자 유형에 대한 연산자를 오버로드 할 수 있습니까?

  25. 25

    덜 오버로드 된 후 연산자가 반대 부울 값을 반환합니다.

  26. 26

    열거 형의 복합 할당 연산자에 대한 연산자 오버로딩

  27. 27

    STL-할당 연산자 대`할당 '멤버 함수

  28. 28

    개체 멤버에 대한 간접 참조는 powershell입니다.

  29. 29

    날짜 / 시간 선택기가 제대로 반복되지 않음

뜨겁다태그

보관