当前位置: 首页 > 知识库问答 >
问题:

为什么在我的代码中触发了-fPermission

元景天
2023-03-14

我正在尝试构建一个非循环树结构,每个节点由字符串标识,每个分支节点的类型为PrimMap。同一代上的所有节点都保存为映射中的Item对象。这是缩写代码:

class PrimMap {
    struct Item {  // a tagged union of different typed objects
        Item( PrimMap * pPrimMap );
        ...
    }
    PrimMap const * _pParent;  // point to fixed parent
    PrimMap( const std::string & contextName, PrimMap const * pParent );
    enum Error { ... };
    Error add( const std::string & key, Item item );
        // add an Item to a branch node
}

inline PrimMap::PrimMap( const std::string & contextName, PrimMap const * pParent ) : _pParent( pParent )
{
    if (pParent)
    {
        pParent->add( contextName, Item( this ) );
    }
}

错误消息是:/src/PrimMap。h: 314:57:错误:将“const PrimMap”作为“PrimMap::error PrimMap::add(const string)”的“this”参数传递

我看不出这个错误消息有什么意义——特别是,我看不到“this”如何与构造函数中的“const PrimMap”关联。

我错过了什么?

共有1个答案

沃侯林
2023-03-14

为什么在我的代码中触发F许可

您正在调用const对象上的非const成员函数。

修理

由于要修改父对象,请删除函数参数中的常量。

PrimMap( const std::string & contextName, PrimMap* pParent );

相应地更改实现。

inline PrimMap::PrimMap( const std::string & contextName, PrimMap* pParent )
{
    if (pParent)
    {
        pParent->add( contextName, Item( this ) );
    }
}
 类似资料:
  • 我试图解决Dijkstra算法上的一个hackerrank问题--https://www.hackerrank.com/challenges/dijkstrashortreach。我在使用我自己的Dijkstra代码逻辑。虽然我的代码解决了更容易的测试用例,但它在更高的测试用例上失败了。我猜我的代码在某个地方缺少了一些传递性,并且我得到的某个节点的值高于预期。你能帮我找出我的错误吗?问题:输入格式

  • 这似乎与对象没有被实例化有关,尽管我不太明白为什么。有人知道出什么事了吗?

  • 我正在做一个编码练习:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 所以我写了这段代码: 现在,这段代码似乎适用于大多数序列,但这段代码引发了一个错误: 错误如下: 我只是不明白列表索引怎么可能超出范围…有人有线索吗?

  • 我试图使java编译类文件,但它抛出了一个错误,如何修复它。

  • 我正在做一个编码练习: 给定一个整数序列作为一个数组,确定是否可以通过从数组中移除不超过一个元素来获得一个严格递增的序列。 例 > 对于序列=[1,3,2,1],输出应为false; 下面是我的代码失败的2个输入: 这两个输入都应该返回True,但我的代码返回false。有什么想法吗?

  • 我有一个可搜索的术语数组,我想使用Lucene基本上CTRL-F通过这个文档堆栈,找到并存储所有这些术语在该文档堆栈中的位置。例如: 术语:“A”、“B”、“C” null 差不多吧。我怎么能这么做?到目前为止,我只是使用一个StandardAnalyzer,如下所示: Lucene最初会生成很多文档,但后来删除了除。cfs文件以外的所有文档。我如何保留其他文件来执行我的查询?