错误 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. Unity最新版打包AssetBundle和加载的方法

    一.设置assetBundleName二.构建AssetBundle包三.上传AssetBundle到服务器四.把AssetBundle放到本地五.操作AssetBundle六.完整例子七.Asset ...

  2. oracle语句录

    从表中选出一个某个单位最近的记录 select * from RSDL_SHXX where sbsj in (select max (sbsj) from RSDL_SHXX where DW_ID ...

  3. <Parquet><Physical Properties><Best practice><With impala>

    Parquet Parquet is a columnar storage format for Hadoop. Parquet is designed to make the advantages ...

  4. [Jedis] ERR wrong number of arguments for 'mget'

    看别人写的代码是件比较痛苦的事情,更加痛苦的是别人的代码出错还要负责调试好. 关于如何迅速定位问题和调试代码,我的一点感受是:逐行认真查看错误信息,在这些信息中找自己熟悉的内容(包括文件名.方法名等) ...

  5. 使用json通过telegraf生成metrics(摘自telegraf github文档)

    JSON: The JSON data format flattens JSON into metric fields. NOTE: Only numerical values are convert ...

  6. 序列化 json 模块

    什么是序列化? 将python中的列表,字典,元组,集合转换成字符串的过程就叫做序列化,反之叫做反序列化. 我们把变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入 ...

  7. Python学习笔记第三周

    目录 一.基础概念 1.集合 集合方法 a.设置集合 b.取交集 c.取并集 d.取差集 e.判断子集 f.判断父集 g.对称差集 基本操作: a.添加 b.删除 c.discard删除 d.长度 e ...

  8. AI之路,第二篇:python数学知识2

    第二篇:python数学知识2 线性代数 导入相应的模块: >>> import numpy as np     (数值处理模块)>>> import scipy ...

  9. Python之路PythonNet,第二篇,网络2

    pythonnet   网络2 问题: 什么是七层模型tcp 和udp区别三次握手和四次挥手************************************************** tcp ...

  10. 阿里云-centos7.2-LNMP-编译安装-记录

    1. 需要使用yum源自动安装的软件: yum -y install autoconf bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-de ...