错误 C2440:“正在初始化”:无法从“const int”转换为“int *”

Posted

技术标签:

【中文标题】错误 C2440:“正在初始化”:无法从“const int”转换为“int *”【英文标题】:error C2440: 'initializing' : cannot convert from 'const int' to 'int *' 【发布时间】:2012-11-27 16:06:25 【问题描述】:

当我尝试运行这段代码时

template <typename Item, typename Key>
Item* BST<Item,Key>::search(const Key& key) const 
    for (std::size_t i = 0; i < tree.size(); ++i) 
                Item* ptr = NULL;
        if(tree[i].data == key && tree[i].occupied == true) 
            ptr = tree[i].data;
            return ptr;
        
    
    return ptr;

我最终得到了标题中描述的错误。我已经尝试过多次修复它,但无法弄清楚我做错了什么。对于一些背景信息,树是节点的向量。每个节点都有一个布尔变量说明它是否被占用,还有一个 Item 变量称为数据。该函数应该使用给定键搜索向量以查找节点并返回指向其数据的指针,但我一生都无法弄清楚。

【问题讨论】:

指出错误指的是哪一行会很有帮助。 对不起,它指的是我设置 ptr = tree[i].data 的那一行 【参考方案1】:

看起来tree[i].data 的类型是const int 而不是int*。该代码应将其地址存储到ptr 中,并可能返回const Item*。更好的是,如果未找到该节点,则返回一个指向该节点的迭代器或序列结束迭代器。

【讨论】:

以上是关于错误 C2440:“正在初始化”:无法从“const int”转换为“int *”的主要内容,如果未能解决你的问题,请参考以下文章

错误 C2440:“=”:无法从“const char *”转换为“char *”

由于从 C 到 C++ 的类型转换,无法编译并出现错误 C2440

错误 C2440:“static_cast”:无法从“long”转换为“LRESULT”

错误 C2440:“默认参数”:无法从“const wchar_t [1]”转换为“BSTR”

C++ 无法从枚举转换为 LPCTSTR [关闭]

用虚函数初始化结构