@kornietsbk

Как правильно использовать typedef?

Если в классе с помощью typedef создаю "псевдоним" для какого-то встроенного типа, а потом "псевдоним" указываю,как возвращаемый тип или как аргумент для какого-либо метода-члена,то компилятор выдает ошибку.
Пример:

typedef unsigned int DigitArea; 
    typedef char Symbol;         
    typedef char* SymbolicArea;     
    class String final{
        private:
             
            SymbolicArea Literal;         
            DigitArea Length;               
            DigitArea Volume;

            DigitArea IdentifyLength(const SymbolicArea str);        
            DigitArea IdentifyLength(SymbolicArea str);

Ошибка:

«DigitArea String::IdentifyLength(SymbolicArea)» cannot be overloaded with «DigitArea String::IdentifyLength(SymbolicArea)»
   19 |             DigitArea IdentifyLength(SymbolicArea str);
      |

Компилятор: g++.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
Убери предпоследнюю строку. Компилятор жалуется на дублирующееся объявление метода IdentifyLength, а не на typedef. К слову, в новом коде вместо typedef следует использовать using:

using DigitArea = unsigned int;

А ещё лучше - использовать типы из <cstdint> по умолчанию. Например:

using DigitArea = std::int64_t;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы