Я понимаю, что практическим решением будет использование синтаксиса, который я закомментировал, но я хочу знать, почему это считается ошибкой компилятора. Какой-то досадный разбор?
int main() { return 0; } [/code] [b]Ошибка[/b]: [code]foo.cpp: In static member function 'static MyClass MyClass::factoryMethod(TOwner*)': foo.cpp:5:17: error: declaration of 'MyClass a_owner' shadows a parameter 5 | MyClass(a_owner); // Does not compile | ^~~~~~~ foo.cpp:4:48: note: 'TOwner* const a_owner' previously declared here 4 | static MyClass factoryMethod(TOwner* const a_owner) { | ~~~~~~~~~~~~~~^~~~~~~ [/code] [b]Компиляция (GCC 10.2.1)[/b]: [code]g++ foo.cpp --std=c++17 [/code] Я понимаю, что практическим решением будет использование синтаксиса, который я закомментировал, но я хочу знать, почему это считается ошибкой компилятора. Какой-то досадный разбор?