typedef int abc;
class Some{
public:
abc foo(){...}
typedef double abc;
};
В приведенном выше коде я получаю сообщение об ошибке:
error: changes meaning of 'abc' from 'typedef int abc'
потому что в книге С++ учебник, пятое издание сказано:
Определения классов обрабатываются в два этапа:
1. Сначала компилируются декларации элементов.
2. Тела функций компилируются только после просмотра полного класса.
Но в коде здесь:
typedef int abc;
class Some{
public:
int foo(abc){...}
typedef double abc;
};
Я установил abc
в списке параметров. Но я не получил такой ошибки, и компилятор работает отлично. почему последний код не вызовет у меня никаких ошибок, подобных первому?