我有课要上。
我需要创建一个返回指向该类成员的指针的函数。
我的类看起来像这样:
class clsNode
{
private:
wstring m_grapheme;
vector <clsNode*> m_Daughters;
public:
clsNode *getNextNode(const udtCharVec &u);
};我尝试了以下几种方法:
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中找不到重载的成员函数。“
谁能告诉我我哪里弄错了?谢谢!
发布于 2013-05-26 21:49:17
我想你的意思是:
return m_Daughters[0];
// ^因为m_Daughters[0]的类型是clsNode*,而*m_Daughters[0]的类型是clsNode,这将与返回类型不匹配。
此外,您的函数签名在定义和实现方面也不同:
clsNode *getNextNode(const udtCharVec &u)
// ^^^^^
clsNode *clsNode::getNextNode(udtCharVec &u)发布于 2013-05-26 21:52:00
您在这里有几个错误。首先,你需要声明
clsNode *getNextNode(const udtCharVec &u);clsNode *clsNode::getNextNode(udtCharVec &u)签名是不同的(注意第二个签名中缺少const )。
第二个问题存在于return语句中:
return *m_Daughters[0];返回值的类型是引用,而不是指针(*那里取消了对从向量中获取的指针的引用)。要解决此问题,请执行以下操作:
return m_Daughters[0];发布于 2013-05-26 21:50:28
但是下面的实现是: clsNode *clsNode::getNextNode(udtCharVec &u)
注意声明中的"const“。编译器告诉您,它找不到您在底部实现的声明
https://stackoverflow.com/questions/16759845
复制相似问题