错误 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> &的更多相关文章

  1. 指向const的指针和const指针

    1.指向const的指针:const int *p 或 int const *p 解释:p是一个指针,指向const int类型的常量:指针指向的内容为常量,因此不能改变*p的值,但指针p可以改变,指 ...

  2. C++中的指针与const

    刚开始接触C++时,指针和const之间的关系有点混乱,现在总结如下: 一.指向const变量的指针 #include<iostream.h> void main() { const in ...

  3. C++ Prime:指针和const

    与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; / ...

  4. 指针和Const限定符

    指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const d ...

  5. C++指针与const

    在C++中,const修饰符一般用于修饰常量.常量在定义的时候必须初始化,而且值一旦定义之后就不能修改,这样就能保证常量的值在程序运行过程中不会发生变换. 1.指向const对象的指针 指向const ...

  6. void指针和const指针

    void指针:主要是便于传递不同类型的参数 const指针: const char *p :const 在* 的左边表示指向一个常量指针:表示指向的内容不可变(*p不能变,p可以改变) int a = ...

  7. [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组

    程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...

  8. 指针和const一些注意事项

    1.常量指针(底层const) 指向常量的指针,指针所指向的对象的值无法被修改,若想存放常量对象的地址,只能使用指向常量的指针. 2.指针常量(顶层const) 指针本身是常量,指针本身的值不可修改. ...

  9. 【C】——指针与const限定符

    const限定符和指针结合起来常见的情况有以下几种. const int *a; int const *a; 这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可改写,所 ...

随机推荐

  1. centos /data目录扩容

    /data盘被日志撑死了,必须扩容 有一块现成的100G的/dev/sdb盘,但是mount到了/data/test目录下,而且还有应用程序在上面进行读写操作 1.先查看哪些应用程序 在占用磁盘 #f ...

  2. 2019-04-09-day028-OSI七层模型

    内容回顾 概念 架构 : B/S C/S 硬件 : 网卡 :在计算机中 帮助我们完成网络通信 交换机 :在局域网内多台机器之间通信 路由器 :多个局域网之间的机器之间的通信 局域网 :一个区域内的多台 ...

  3. Python用户交互

    print("开始") # 赋值,把等号右边的内容赋值给左边 s = input() #input("这里是input")# input输入,让用户输入一些内容 ...

  4. ecmall 支付成功 订单状态没有改变解决办法

    问题原因:ecmall版本较低,或者是没有更新支付宝接口导致的.支付宝修改了返回参数,给支付宝增加了一个返回的状态:TRADE_SUCCESS. 解决方案: 需要修改“includes\payment ...

  5. 数据结构中的列表、元组、字典、集合 ,深浅copy

    数据结构:数据结构是计算机存储数据和组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.在python中主要的数据类型统称为容器. 而序列(如列表.元组).映射(如字典).集合 ...

  6. Fizz Buzz 问题

    要求: 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 示 ...

  7. 树莓派与node.js —— onoff、dht

    1. 发光二极管 tm-onoff var Gpio = require('tm-onoff').Gpio, led = new Gpio(17, 'out'), button = new Gpio( ...

  8. tumblr热度

  9. Python 金融数据分析库及相关框架

    BackTest框架库: PyAlgoTrade ZipLine 金融数据分析库: pandas

  10. 论Injection的前世今生

    Click me~ why Java EE provides injection mechanisms that enable your objects to obtain references to ...