不能将“this”指针从“const SqQueue<ElementType>”转换为“SqQueue<ElementType> &
错误 1 error C2662: “int SqQueue<ElementType>::getLength(void)”: 不能将“this”指针从“const SqQueue<ElementType>”转换为“SqQueue<ElementType> &” e:\c++\common\circularsqqueue\circularsqqueue\sqqueue.h 170
错误 2 error C2662: “bool SqQueue<ElementType>::IsEmpty(void)”: 不能将“this”指针从“const MySqQueue<int>”转换为“SqQueue<ElementType> &” e:\c++\common\circularsqqueue\circularsqqueue\mysqqueue.h 25
解析:常量对象使用了非常量成员函数,解决方法是:在该非常量成员函数的声明和定义的参数列表后加上const,使之成为常量成员函数即可
例如:
/*拷贝构造函数*/
template<typename ElementType>
SqQueue<ElementType>::SqQueue(const SqQueue<ElementType>& rightQ) //rightQ是一个常量对象
{ base = NULL;
base = new ElementType[rightQ.getLength()]; //getLength()这个成员函数是一个非常量成员函数
assert(base != NULL);
queueSize = rightQ.queueSize; front = rightQ.front;
rear = rightQ.rear; for (int i = front; i != rear; i = (i + ) % queueSize)
base[i] = rightQ.base[i]; }
解决方法是:在getLength()这个成员函数声明和定义时在它的参数列表后加上const,使之成为一个常量成员函数:
声明时: /*求循环循环顺序队列中元素个数*/
int getLength() const; 定义时:
/*求循环循环顺序队列中元素个数*/
template<typename ElementType>
int SqQueue<ElementType>::getLength() const
{
return (rear - front + queueSize) % queueSize; //不能是(rear - front) % queueSize,否则可能会得出负数
}
不能将“this”指针从“const SqQueue<ElementType>”转换为“SqQueue<ElementType> &的更多相关文章
- 指向const的指针和const指针
1.指向const的指针:const int *p 或 int const *p 解释:p是一个指针,指向const int类型的常量:指针指向的内容为常量,因此不能改变*p的值,但指针p可以改变,指 ...
- C++中的指针与const
刚开始接触C++时,指针和const之间的关系有点混乱,现在总结如下: 一.指向const变量的指针 #include<iostream.h> void main() { const in ...
- C++ Prime:指针和const
与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; / ...
- 指针和Const限定符
指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const d ...
- C++指针与const
在C++中,const修饰符一般用于修饰常量.常量在定义的时候必须初始化,而且值一旦定义之后就不能修改,这样就能保证常量的值在程序运行过程中不会发生变换. 1.指向const对象的指针 指向const ...
- void指针和const指针
void指针:主要是便于传递不同类型的参数 const指针: const char *p :const 在* 的左边表示指向一个常量指针:表示指向的内容不可变(*p不能变,p可以改变) int a = ...
- [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组
程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...
- 指针和const一些注意事项
1.常量指针(底层const) 指向常量的指针,指针所指向的对象的值无法被修改,若想存放常量对象的地址,只能使用指向常量的指针. 2.指针常量(顶层const) 指针本身是常量,指针本身的值不可修改. ...
- 【C】——指针与const限定符
const限定符和指针结合起来常见的情况有以下几种. const int *a; int const *a; 这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可改写,所 ...
随机推荐
- Oracle function和procedure
1.返回值的区别 函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2. 调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数:一般情况下是用来计算并返回一个计算结 ...
- Python中列表、元组、集合、字典
Python 列表(List) 列表是最常用的Python数据类型: 列表中的数据项不需要具有相同的类型: 列表也叫做数组,定义时使用[]: 通过下标访问列表中的元素,下标从 0 开始计数 列表的增 ...
- English (一)
Phrase do somebody a favour give sb a hand do something for sb come to sb aid 帮助某人 what can ...
- js-null 、undefined
注意:null 转为数值时为0,而 undefined 转为数值时为 NaN. Number(undefined) // NaN Number(null) // 0 null 表示"没有对象 ...
- Ubuntu配置Github并且新建仓库push代码,从已有仓库clone代码,并且push
Github是一款良好的管理代码的工具,使用的时候需要现在Ubuntu上进行配置,下面的内容分为三个部分,第一部分讲述如何在之前从未配置github的电脑配置github,第二部分讲述如何在远程新建一 ...
- 通过web.config来自定义output caching缓存
我们服务器有开启缓存功能, 缓存功能可以减少您访问网站时候网站在服务器里面的编译时间, 大大加快您网站的访问速度, 如果您需要对您网站进行频繁更新的话, 您可以考虑暂时将缓存时间减少,或者暂时关闭缓存 ...
- HDU2021发工资咯:)
Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处 ...
- Thread sleep() wait()
学艺不精,先总结一下两者的区别: 对比项 wait sleep 类所属 Object Thread,static方法 使用 在synchronised block中(包括notify,notifyAl ...
- python django day 4 database
django-admin.py startproject learn_models # 新建一个项目 cd learn_models # 进入到该项目的文件夹 django-admin.py star ...
- oracle查询A表中主键都被哪些表引用了?
select r.TABLE_NAME from USER_CONSTRAINTS p, USER_CONSTRAINTS r where p.TABLE_NAME = 'IAM_AUDIT_FIND ...