Member 14756652 Ответов: 3

Как я могу решить эту ошибку: ожидаемый неквалифицированный идентификатор в конце ввода


#include<iostream>
using namespace std;
class Dist
{
    int feet;
    float inches;
public:
    enter()
    {
        cout<<"\nenter feet ";
        cin>>feet;
        cout<<"\nenter inches";
        cin>>inches;
    }
    display()
    {
        cout<<feet<<"'-"<<inches;
    }
    scale(Dist &d1, float scalefactor)
    {
        d1.feet= d1.feet*scalefactor;
        d1.inches=d1.inches*scalefactor;
        while(d1.inches>=12)
            {
                d1.inches=12-d1.inches;
                d1.feet++;
            }

};
main()
{
    Dist d1,d2;
    d1.enter();
    d1.scale(d1,0.5);
    d1.display();

} //error is in this line


Что я уже пробовал:

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

3 Ответов

Рейтинг:
1

OriginalGriff

Вам не хватает близкой фигурной скобки (и перед ней есть паразитная точка с запятой main
Если вы разберетесь со своим отступом, он станет более очевидным:

class Dist
{
    int feet;
    float inches;
public:
    enter()
    {
       ...
    }
    display()
    {
       ...
    }
    scale(Dist &d1, float scalefactor)
    {
       ...
       while(d1.inches>=12)
       {
          ...
       }
    }
main()
    {
       ...
    }
--- requires a close curly bracket here to end the class definition ---


Richard MacCutchan

Я думаю, что ему просто нужна закрывающая скобка для метода масштабирования. Закрывающая скобка и точка с запятой перед main закрывают определение класса.

Рейтинг:
0

phil.o

В дополнение к ответу ОГА, я думаю

d1.inches=12-d1.inches;
должны прочитать
d1.inches -= 12;
вместо.


Рейтинг:
0

John R. Shaw

Ну, на первый взгляд, метод "scale" в классе "Dist" не имеет закрывающего "}". Иногда ошибки компилятора немного загадочны, а в других случаях они означают именно то, что говорят. Это до вас, чтобы выяснить разницу.