Что означает «скрывающий конструктор для» предупреждения при компиляции C++ с g++?

Используя следующий код:

#include <stdio.h>


struct my_struct {
        int a;
        int b;
        my_struct();
};

my_struct::my_struct(void)
{
        printf("constructor\n");
}

void my_struct(void)
{
        printf("standard function\n");
}

int main (int argc, char *argv[])
{
        struct my_struct s;
        s.a = 1;
        s.b = 2;

        printf("%d-%d\n", s.a, s.b);

        return 0;
}

я получаю предупреждение компиляции с g++ -Wshadow main.cpp:

main.cpp:15:20: warning: ‘void my_struct()’ hides constructor for ‘struct my_struct’

Я был бы в порядке с этим предупреждением, если бы функция void my_struct фактически заменила my_struct::my_struct. Но, похоже, это не так. Если я запускаю программу, я получаю:

constructor
1-2

Есть идеи, что означает это предупреждение? Это очень раздражает, особенно когда я включаю заголовки C в код C++

-121--1797858- Как долго анимация перехода между представлениями на UINavigationController? В идеале была бы некая константа, содержащая это значение. Я внедряю код, который имеет собственные анимации перехода, и я бы хотел, чтобы они имели ту же длину, что и платформа...

В идеале была бы какая-то константа, содержащая это значение.

Я внедряю код, который имеет собственные анимации перехода, и я бы хотел, чтобы они имели ту же длину, что и анимации перехода платформы.

15
задан morais 30 September 2011 в 10:27
поделиться