문제

VS2005로 번역 해야하는 큰 Visual Studio 6 C ++ 프로젝트를 상속했습니다. 일부 클래스 중 일부는 연산자 <및 연산자 []를 정의했지만 선언에 반환 유형을 지정하지 않습니다. VS6은 이것을 허용하지만 VS2005는 허용하지 않습니다.

C 표준은 일반 함수의 기본 반환 유형이 int임을 지정하고 VS6이이를 따르고 있다고 가정했지만 C ++ 운영자에게도 적용됩니까? 아니면 VS6이 자체적으로 리턴 유형을 파악할 수 있습니까?

예를 들어, 코드는 다음과 같은 사용자 정의 문자열 클래스를 정의합니다.

class String {
  char arr[16];
  public:
    operator<(const String& other) { return something1 < something2; }
    operator[](int index) { return arr[index]; }
};

VS6은 단순히 int로 반환 유형을 넣었거나 연산자 []가 숯을 반환해야한다는 것을 알아 내기에 충분히 똑똑했을까요? ?

물론이 코드 vs2005 C ++를 준수하기 위해 반환 유형을 추가해야하지만, 프로그램 동작을 즉시 변경하지 않기 위해 이전과 동일한 유형을 지정해야합니다 (현재 우리는 현재 호환성을 위해 진행됩니다. 나중에 일을 표준화합니다).

도움이 되었습니까?

해결책

operator< 반환 a bool 기본적으로.

operator[] 보고 int 기본적으로 (i 생각한다), 그러나 컬렉션에 포함 된 모든 것을 반환하기 위해 거의 확실하게 변경되어야합니다. 위에서 준 문자열 예제의 경우 char 또는 wchar_t.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top