首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++返回指向类的指针

C++返回指向类的指针
EN

Stack Overflow用户
提问于 2013-05-26 21:45:41
回答 3查看 98关注 0票数 1

我有课要上。

我需要创建一个返回指向该类成员的指针的函数。

我的类看起来像这样:

代码语言:javascript
复制
class clsNode
{
private:
    wstring m_grapheme;
    vector <clsNode*> m_Daughters;
public:
    clsNode *getNextNode(const udtCharVec &u);
};

我尝试了以下几种方法:

代码语言:javascript
复制
clsNode *clsNode::getNextNode(udtCharVec &u)
{

    if (u.Grapheme == m_grapheme)
    {
        return *m_Daughters[0];
    }
    else
    {
        return *m_Daughters[1];
    }
}

编译器告诉我"error c2511: clsNode:getNextNode(udtCharVec &):在clsNode中找不到重载的成员函数。“

谁能告诉我我哪里弄错了?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-26 21:49:17

我想你的意思是:

代码语言:javascript
复制
return m_Daughters[0];
//    ^

因为m_Daughters[0]的类型是clsNode*,而*m_Daughters[0]的类型是clsNode,这将与返回类型不匹配。

此外,您的函数签名在定义和实现方面也不同:

代码语言:javascript
复制
clsNode *getNextNode(const udtCharVec &u)
//                   ^^^^^
clsNode *clsNode::getNextNode(udtCharVec &u)
票数 4
EN

Stack Overflow用户

发布于 2013-05-26 21:52:00

您在这里有几个错误。首先,你需要声明

代码语言:javascript
复制
clsNode *getNextNode(const udtCharVec &u);

代码语言:javascript
复制
clsNode *clsNode::getNextNode(udtCharVec &u)

签名是不同的(注意第二个签名中缺少const )。

第二个问题存在于return语句中:

代码语言:javascript
复制
return *m_Daughters[0];

返回值的类型是引用,而不是指针(*那里取消了对从向量中获取的指针的引用)。要解决此问题,请执行以下操作:

代码语言:javascript
复制
return m_Daughters[0];
票数 2
EN

Stack Overflow用户

发布于 2013-05-26 21:50:28

但是下面的实现是: clsNode *clsNode::getNextNode(udtCharVec &u)

注意声明中的"const“。编译器告诉您,它找不到您在底部实现的声明

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16759845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档