繁体   English   中英

返回指针时类型转换错误

Type conversion error when returning pointer

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想返回一个指针(或对一个指针的引用)而不是对我的值的引用。 但我不断收到转换错误。

我尝试将返回类型更改为 Node* 但它不将其识别为已知类型,因为 Node 是一个结构。

使用模板时,我很难清楚地理解这些转换错误。 我还没有找到这些转换的明确答案。

error: cannot convert ‘TreeAVL<int>::Node*’ to ‘const int*’ in return
template<class T>
const T* TreeAVL<T>::find(Node* node, const T& element) const {
    if (node == nullptr)
        return nullptr;
    if (element == node->value)
        return &(node->value);
        //return &(node);            <<<< what I want to return if found.
    ...
}
1 个回复

要了解转换错误,

error: cannot convert ‘TreeAVL<int>::Node*’ to ‘const int*’ in return

您必须查看产生此错误的模板的定义,类似于:

// A function returning const T*
template<class T>
const T* TreeAVL<T>::find(Node* node, const T& element) const {
    // OK, any T* can be a nullptr:
    if (node == nullptr)
        return nullptr;
    // But here the return value is a TreeAVL<T>::Node*, which is not
    // necessarily convertible to any T*
    if (element == node->value)
        return node;
    // ...
}

因此,一旦将此模板与不兼容的T (例如示例中的int )一起使用,就会出现错误。 如果您想返回指向节点的指针,则必须声明 function 这样做,并且其返回语句必须与之兼容。

此外,如果您想避免繁琐的类型名,您还可以使用const auto* ,或者将定义内联并将其指定为const Node*

1 类型转换`operator`函数返回指向函数的指针

我想要一种允许terminfo转义序列(特别是由于调用tparm()而导致的结果)存储在字符串中的方法,因此我编写了这个包装器类。 可以如下使用(粗略示例)。 问题:有没有一种声明运算符的方法,该运算符允许将该类的对象解释为指向采用int并返回int的函数的指针,而无需诉诸类型别 ...

2 返回指针时出错

我正在用C编写二进制搜索树的代码,遇到错误。 尝试运行此程序时运行失败。 在返回newNode期间发生错误。 我不知道为什么这一点没有回来。 我正在使用netbeans,这就是它的意思 ...

2013-09-13 03:18:13 2 98   c
5 返回通用类型时出错(无隐式转换)

调用泛型方法时获取隐式转换异常。 这样做的正确方法是什么? 这是我的接口和类定义: 我收到以下异常: 类型“System.Collections.Generic.List”不能用作泛型类型或方法“TestClass.Call(string, string)”中的类型参数“T”。 没有从“ ...

6 应用与指针相关的运算符时隐式转换为指针类型

请考虑以下代码: A具有对指针类型的隐式转换。 我尝试在三个需要指针的上下文中使用它; 两个第一行很好,但尝试通过operator-&gt;引用struct X的字段依赖于隐式转换为X*不起作用。 这是为什么? 从概念上讲,在这种情况下, operator[]与operator- ...

7 Access中的自定义函数返回类型转换错误

我正在Access中创建一个自定义函数,该函数检查2个字段以查看其中是否有值,并根据哪个字段具有值返回答案。 它的一半有效,但是在尝试使用自定义函数时,查询后出现类型转换错误。 可能有4个结果,所有结果都返回不同的答案。 1)字段1为空,字段2为空=函数不返回任何内容。 ...

9 当返回类型不是指针时返回NULL

我有一个定义为 我很好奇,当将类类型要求为返回类型时,为什么可以合法接受“ NULL”? 我认为NULL通常由Macro定义为“ 0”的同义词。 有人可以解释其背后的原因吗? 谢谢! 更新: 该类定义为: 还有一个问题,按值返回时,c ++会进行隐式转换吗? ...

2013-11-28 09:41:16 4 101   c++
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM