小编Ada*_*dam的帖子

返回指针向量的类中的const方法

说我有这个班:

#include <vector>
using namespace std;

class Bag
{
    vector<int*> items;

public:
    void addItem(int* i) 
    { 
        items.push_back(i); 
    }
    const vector<int*> getItems() const
    {
        return items;
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是我想阻止参数项中指针指向的值的更改.但是使用从getItems我返回的向量允许更改指向的值.

现在,为了解决这个问题,我可以将参数项声明为,vector<const int*>但是我也无法更改我的类中的值.有没有其他方法来保护值但仍未在项目声明中使用const?

c++ pointers stl const

9
推荐指数
2
解决办法
734
查看次数

C++错误C2143语法错误:缺少';' 在函数名之前

我有头文件:

#ifndef VIP_TICKET_H
#define VIP_TICKET_H

#include "ticket.h"

class VIPTicket : public Ticket
{
public:
    enum VIPType { FIRST_CLASS, FAST_LINE };

    VIPType getTicketType() const;

private:
    VIPType type;
};
#endif
Run Code Online (Sandbox Code Playgroud)

它是cpp文件

#include "vipTicket.h"

VIPType VIPTicket::getTicketType() const
{
    return type;
}
Run Code Online (Sandbox Code Playgroud)

错误说" 错误C2143:语法错误:缺少';' 前'VIPTicket :: getTicketType' "

这个错误很混乱..我想这不是';' 这是缺少的,但可能是我无法用手指代码的其他错误..

c++ syntax-error

3
推荐指数
1
解决办法
346
查看次数

具有不同const限定符的2种类型之间的转换

这是我想要使用的代码的一个简短示例:

template <class T>
class B
{
public :
    bool func1(const T& t)
    {
        // do something
    }
};


class A
{
    B<int*> b;
public:
    void func2(const int* a)
    {
        b.func1(a);
    }
};
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

错误C2664:'B :: func1':无法将参数1从'const int*'转换为'int*const&'

是一种解决这个问题的方法,而无需更改函数声明和不使用const_cast?

编辑:

问题背后的一些信息

  1. B 实际上是我写的容器类(比如列表)

  2. A 是使用该列表的类

  3. func1 是一个需要查找元素是否在列表中的函数

  4. func2 是一个接收要从列表中删除的元素的函数

c++ pointers const const-cast template-classes

3
推荐指数
1
解决办法
100
查看次数

c ++指针数组中的const限定符

假设我有一个指向整数的指针数组(即每个元素都是指向int的指针)

int** ptrArray;
Run Code Online (Sandbox Code Playgroud)

我想阻止更改数组条目指向的整数

我需要把const放在哪里?

1. const int ** ptrArray
2. int const ** ptrArray
3. int *const*  ptrArray
4. int ** const ptrArray
Run Code Online (Sandbox Code Playgroud)

对此有什么规定吗?像"第一个const保护数据","第二个const保护指针"等等?

const的位置背后是否有任何逻辑?放置的地方与保护的地方之间有什么联系?

这对我来说是一个令人困惑的问题,如果有人可以给我任何指导或链接,我会真的很高兴我可以阅读更多关于如何以及在何处使用const基于我想要保护的内容(如果我需要使用三维数组中的const或左右)

c++ arrays pointers const

0
推荐指数
1
解决办法
364
查看次数