Привет, я был простым классом кодирования, за которым следует образец кода в Интернете. Этот код отлично работает без ошибок.затеняет параметр, когда один параметр на конструкторе
class Shape{
protected:
int width,height;
public:
Shape(int a = 0, int b=0)
{
width = a;
height = b;
}
};
class regSquare: public Shape{
public:
regSquare(int a=0, int b=0)
{
Shape(a, b);
}
};
но если изменить, чтобы иметь только один параметр для конструктора, таких как
class Shape{
protected:
int width;
public:
Shape(int a = 0)
{
width = a;
}
};
class regSquare: public Shape{
public:
regSquare(int a = 0)
{
Shape(a);
}
};
это происходит ошибка при массаже
'error: declaration of `a' shadows a parameter'
Я понятия не имею, что это неправильно о мой код
верхний один точно такой же, как, например в Интернете. и он все еще не работает с добавлением «:» перед фигурой (a). любое предложение? – user842589
@ user842589: Обратите внимание на точное размещение скобок: это изменение больше, чем добавление двоеточия перед 'Shape'! Вы должны указать базовые классы (и члены), которые вам нужно инициализировать в списке инициализаторов членов, который предшествует телу конструктора. Я могу воспроизвести вашу ошибку с исходным кодом, и мое изменение исправляет его. Если первый пример точно такой же, как и в Интернете, вы выбрали плохой источник для примера, поскольку он ведет себя так, как я сказал, и я уверен, что это не то, что вы хотите. –