список требует тип класса - PullRequest
0 голосов
/ 05 октября 2018

Итак, я пытаюсь создать алгоритм пузырьковой сортировки в классе, и у меня возникает эта проблема, когда он продолжает выдавать ошибку, когда я пытаюсь найти длину списка, в котором говорится, что выражение должно иметькласс типа "и для жизни я не могу понять, что делать.учебник, который я использую, не помогает, и я не могу найти других людей с такой же проблемой.

, если кто-то получит то, что он просит, я буду признателен за помощь, и любое объяснение также будет оценено какЯ все еще новичок и хотел бы понять, поэтому я могу попытаться узнать, что все это было сделано на VS 2017 (бесплатная версия)

#include "pch.h"
#include <iostream>
using std::cout;
using std::endl;

int main()
 {
    bool found = true;
    int target{ 0 };
    int temp{};
    bool ordered{ false };

    int list[10] = { 4,6,5,1,3,2,10,8,9,7 };    
    cout << list.length() << endl;


    bool swapped{ false };

    while (ordered = false)
    {
        target = 0;
        while (target != list.length)
        {
            if (list[target] > list[target + 1])
            {
                swapped == true;
                list[target] = temp;
                list[target] = list[target + 1];
                list[target + 1] = temp;
                target = target + 1;
            }
            else
            {
                target = target + 1;
            }
        }
        if (swapped == false)
        {
            ordered = true;
        }
    }
    cout << list << endl;

    getchar();
    return 0;
}

ссылка на фотографию сообщения об ошибке

1 Ответ

0 голосов
/ 05 октября 2018

Ошибка, которую вы упомянули («выражение должно иметь тип класса»), вызвана приведенным ниже оператором и другими подобными операторами:

cout << list.length() << endl;

list является целочисленным массивом размера 10 согласноэто утверждение int list[10];

Таким образом, вы не можете использовать . на нем.Вы можете использовать оператор . только для структуры, класса или объединения.И даже если list является классом / структурой, в нем должен быть определен метод length(), чтобы вышеприведенное сработало.

Вместо этого следует использовать оператор sizeof.Вы можете сохранить его в переменной и использовать позже.

size_t length = sizeof list/sizeof list[0]; 
cout << length << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...