函数强制转换中作为复合表达式处理的表达式列表[-fpermissive]
expression list treated as compound expression in functional cast [-fpermissive]
#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++ test.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#中处理C++指针而不使用unsafe的最佳方法
- 有人可以帮助我处理正则表达式吗?
- 容器如何处理 lambda 表达式的参数
- c++ 如何处理 0*(大表达式)
- 有什么方法可以通过删除表达式安全地处理两次释放内存?
- 如何对标准::正则表达式进行哈希处理
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- C++ 正则表达式错误(未处理的异常)
- 用C++处理输出表达式
- 在调车场处理带括号的表达式
- 如何在表达式计算器中处理二进制整数
- 处理对“vector_binary_operation”类中“表达式”的引用,而无需不必要的副本
- 使用正则表达式处理ASCII字符
- 编写c++正则表达式以匹配#include预处理指令
- C++ 如何处理循环中使用的 lambda 表达式for_each返回值
- 在c++ lambda表达式中调用类成员函数失败.处理步骤
- 处理正则表达式字符串时编译崩溃(内存泄漏)
- 我想用正则表达式处理字符串,但如何编写正确的正则表达式
- 函数强制转换中作为复合表达式处理的表达式列表[-fpermissive]