我一直在尝试编译,并玩了一圈的和数,但仍然不能弄清楚错误是什么。有什么想法吗?
qsort.cc:22:23: error: no matching function for call to ‘qsort<int>::quicksort(std::vector<int, std::allocator<int> >*)’
qsort.cc:22:23: note: candidate is:
qsort.h:16:6: note: void qsort<T>::quicksort(std::vector<T>&) [with T = int]
qsort.h:16:6: note: no known conversion for argument 1 from ‘std::vector<int, std::allocator<int> >*’ to ‘std::vector<int, std::allocator<int> >&’
标题:
template <class T>
class qsort
{
public:
void quicksort(vector<T> &v);
void qusort(vector<T> &v, int left, int right);
void print(vector<T> &v);
};
template <class T>
void qsort<T>::quicksort(vector<T> &v)
{
qusort(&v, 0, 0);
}
template <class T>
void qsort<T>::print(vector<T> &v)
{
for(int i = 0; i < v.size(); i++)
{
cout << v[i] << endl;
}
}
int main()
{
qsort<int> asort;
vector<int> v;
v.push_back(2);
v.push_back(1);
v.push_back(7);
v.push_back(3);
v.push_back(8);
v.push_back(4);
v.push_back(0);
v.push_back(9);
v.push_back(5);
v.push_back(6);
asort.quicksort(&v);
asort.print(&v);
return 0;
}
成员函数通过引用获取参数。它们不接受指针(地址运算符&
返回的指针)。只需传递对象,引用就会绑定:
asort.quicksort(v);
asort.print(v);
之前,我已经实施了此功能,并且它起到了作用: 我甚至可以用下面的东西检查我是否得到了正确的尺寸,一切都很好。 但是,在使用以下初始化尝试整个程序时,我得到了一个编译错误: 以下是错误消息: rbm. cpp:在函数“ululemexFunction(int, mxArray**, int, const mxArray**)”中:rbm. cpp: 570:64: error:从“int”到“int
我想创建一个简单的3x3矩阵类,并能够通过下标操作符访问其内容。代码如下: 我希望能够访问数组的元素,无论矩阵的对象是常量还是非常量。但我从编译器中得到以下错误: 错误:从“const int*”到“int*”的转换无效[-fpermissive] 我做了一些研究,我有一个假设:也许,因为我已经将这个成员函数声明为const函数,在它的定义中,编译器将对象的所有不可变成员视为const成员(它掩盖
我想将浮点值转换为int值或抛出异常,如果这种转换是不准确的。 我找到了以下建议:使用来转换,然后使用来检查这些值是否相等。如果它们相等,那么转换是精确的,否则就不是。 但是我发现了一个不起作用的例子。下面是演示这个例子的代码: 它输出: 我知道2147483648不适合整数范围,但我很惊讶为这些值返回true。有没有更好的方法来比较float和int?我想可以将这两个值都转换为字符串,但对于这样
描述 (Description) C库函数int toupper(int c)将小写字母转换为大写。 声明 (Declaration) 以下是toupper()函数的声明。 int toupper(int c); 参数 (Parameters) c - 这是要转换为大写的字母。 返回值 (Return Value) 此函数返回等于c的大写,如果存在此值,则c保持不变。 该值作为int值返回,可以
描述 (Description) C库函数int tolower(int c)将给定的字母转换为小写。 声明 (Declaration) 以下是tolower()函数的声明。 int tolower(int c); 参数 (Parameters) c - 这是要转换为小写的字母。 返回值 (Return Value) 此函数返回等于c的小写,如果存在此值,则c保持不变。 该值作为int值返回,可
描述 (Description) C库函数int isxdigit(int c)检查传递的字符是否是十六进制数字。 声明 (Declaration) 以下是isxdigit()函数的声明。 int isxdigit(int c); 参数 (Parameters) c - 这是要检查的字符。 返回值 (Return Value) 如果c是十六进制数字,则此函数返回非零值(true),零(false