ошибка conflicting declaration при иницилизации обекта

 struct Sizes {
    const int LAYERS;
    const int FIRST_LAYER;
    const int SECOND_LAYER;
    const int THIRD_LAYER;
};

class Test
{
private:
    Sizes sizes;
public:
    Test(Sizes sizes_f):sizes(sizes_f) {}
};

int main()
{
    std::cout<<__cplusplus<<std::endl;
    Sizes sizes {3,3,2,1};
    //Parser().parse();
    //Neural(sizes);
    Test(sizes);

}

ошибка

conflicting declaration «Test sizes»
   35 |  Test(sizes);
      |       ^~~~~
src/Main.cpp:32:8: замечание: предыдущая декларация «Sizes sizes»
   32 |  Sizes sizes {3,3,2,1};
      |        ^~~~~

Как исправит? Заранее спасибо


Ответы (2 шт):

Автор решения: Harry

А что вы хотите получить? По сути, вы объявили переменную sizes типа Test, а так как перед этим уже была объявлена переменная sizes типа Sizes, то...

Может, вы хотели этого:

Test{sizes};

?

→ Ссылка
Автор решения: AR Hovsepyan

Конструкторы вызываются так:

Test t = Test(sizes); 
Test t(sizes);        
Test{sizes}; 

     

А Test(sizes); это или вызов функции Test или объявление Test sizes

→ Ссылка