列表需要类类型

时间:2018-10-05 10:28:29

标签: c++ class sorting

因此,我尝试在课堂上创建一个冒泡排序算法,但遇到了这个问题,当我尝试查找表示“表达式必须具有一个班级类型”,对于我的一生,我不知道该怎么做。我正在使用的教程没有帮助,而且找不到其他遇到相同问题的人。

如果有人得到了我的要求,我将不胜感激,并且由于我仍然很新并且想了解,因此也将不胜感激,因此我可以尝试学习 这些都是在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;
}

link to the photo of the error message

1 个答案:

答案 0 :(得分:1)

您提到的错误(“表达式必须具有类类型”)是由以下语句和其他类似语句引起的:

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

list是此语句int list[10];

的大小为10的整数数组

因此,您不能在其上使用.。您只能在结构或类或联合上使用.运算符。即使list是一个类/结构,也应在其中定义length()方法以使上述方法起作用。

您应该使用sizeof运算符。您可以将其存储在变量中,以后再使用。

size_t length = sizeof list/sizeof list[0]; 
cout << length << endl;