【问题标题】:Return type out-of-line definition differs from that in the declaration返回类型的行外定义与声明中的不同
【发布时间】:2014-10-16 22:36:51
【问题描述】:

第一次问,要温柔。

我在为函数返回自定义类型时遇到问题。更具体地说,我有一个链表,我正在编写一个遍历链表末尾并返回指向该节点的指针的函数。不幸的是,我遇到了一个讨厌的错误:

“mySpace::CDAL::tailNode 的返回类型外定义与声明中的不同”

头文件包含在“mySpace”命名空间和模板类CDAL中

private:

struct Node
{....};

函数头

Node* tailNode();

在.cpp中

template <typename T>
struct Node* mySpace::CDAL<T>::tailNode()
{...}

我尝试使用 struct,因为有人提到您有时需要它的非 typedef 声明,而我不再收到未知类型错误,而是收到了这个错误。

提前感谢您的帮助。

【问题讨论】:

  • 除了我的回答之外,您不应该在 .cpp 文件中定义模板,除非您真的知道自己在做什么。他们在使用时会给出未定义的引用。而是简单地在 .h 文件中定义函数。

标签: c++


【解决方案1】:

NodemySpace::CDAL&lt;T&gt; 中声明,因此它的名称必须在定义中进行限定:

template <typename T>
struct typename mySpace::CDAL<T>::Node* mySpace::CDAL<T>::tailNode()
{...}

struct 也不需要。把它拿出来不会有什么不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 2021-03-23
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多