gpt4 book ai didi

c++ - 表达式列表在功能转换中被视为复合表达式 [-fpermissive]

转载 作者:行者123 更新时间:2023-11-30 02:47:57 24 4
gpt4 key购买 nike

#include <iostream>
#include <algorithm>

using namespace std;

typedef bool (*compare)(int,int);

void SelectionSort(int *inArray,int size, compare)
{
for (int loop = 0 ; loop < size ; loop++)
{
for(int j = loop+1 ; j < size ; j++)
{
if (compare(inArray[j],inArray[loop]))
swap(inArray[loop],inArray[j]);
}
}
}

void display(int *inArray,int size)
{
cout << "Printing the array " << "\n" << endl;
for(int loop = 0; loop < size; loop++)
{
cout << inArray[loop] << endl;
}

}

bool ascending(int a , int b)
{
if(a < b)
return true;
else
return false;
}

bool descending(int a,int b)
{
if (a > b)
return true;
else
return false;
}


int main()
{

compare c1 = ascending;
compare c2 = descending;
int pList[5] = {50,40,30,20,10};

display(pList,5);
SelectionSort(pList,5,c1);
display(pList,5);
SelectionSort(pList,5,c2);
display(pList,5);

}

$ g++ 测试.cpptest.cpp: 在函数 'void SelectionSort(int*, int, compare)' 中:test.cpp:14:40: 错误:表达式列表在功能转换 [-fpermissive] 中被视为复合表达式test.cpp:14:40: 警告:从不同大小的整数转换为指针 [-Wint-to-pointer-cast]

为什么会出现错误。我是C背景的。以上我认为在'C'中完全有效为什么在 C++ 中会发生这种情况?

最佳答案

typedef 并不像您认为的那样。在 C++ 中,typedef 创建类型别名。例如:

typedef int INT;
INT i = 5; //i is of type int

所以你的代码应该是:

void SelectionSort(int *inArray,int size, compare comp)
...
if (comp(inArray[j],inArray[loop]))

关于c++ - 表达式列表在功能转换中被视为复合表达式 [-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com