所以我想做的是我想要一个类LinkedList
,并且在头文件中,我有一个受保护的结构ListNode
,该结构具有字符串值参数和一个指向下一个节点的指针。在我的公共成员函数中,我有一个add函数,该函数调用递归的私有add函数。
这是H文件。
#ifndef LINKEDLIST_H_INCLUDED
#define LINKEDLIST_H_INCLUDED
#include <iostream>
using namespace std;
class LinkedList
{
protected: // Declare a class for the list node.
struct ListNode
{
string value;
ListNode *next;
ListNode(string value1, ListNode *next1 = NULL)
{
value = value1;
next = next1;
}
};
ListNode *head; // List head pointer
public:
LinkedList() { head = NULL; } // Constructor
~LinkedList(); // Destructor
void add(string value) { head = add(head, value);}
private:
// Recursive implementations
ListNode *add(ListNode *aList, string value); //Function called by the void add function in public
};
#endif // LINKEDLIST_H_INCLUDED
当我尝试实现此递归添加功能时,就会出现问题。我已经尝试了下面的代码,但是我仍然收到 ListNode没有类型的错误。即使我已将其定义为受保护的属性?
这是实施文件。
#include "LinkedList.h"
//Destructor works fine, nothing wrong here and we are using ListNode
LinkedList::~LinkedList()
{ ListNode *garbage;
head = garbage;
delete garbage;
}
//Error comes from this recursive add function
ListNode LinkedList::*add(ListNode *aList, string val)
{
//add a node recursively
}
非常感谢我需要更改的任何内容。
(注)如果您需要更多信息,我很乐意将其发布。我只想要一些帮助。谢谢!
答案 0 :(得分:3)
LinkedList::ListNode* LinkedList::add(ListNode *aList, string val)
由于ListNode*
是在类声明中声明的,因此您需要像LinkedList
那样适当定义@font-face{
font-family:'Adobe Garamond Pro Bold';
src:url(../fonts/AGaramondPro-Bold.eot);
src:url(../fonts/AGaramondPro-Bold.eot?#iefix) format('embedded-opentype'),url(../fonts/AGaramondPro-Bold.woff) format('woff'),url(../fonts/AGaramondPro-Bold.ttf) format('truetype'),url(../fonts/AGaramondPro-Bold.svg#3ba63f82a1b13c399d199d455e95ce26) format('svg');
font-style:normal;
font-weight:700
}
@font-face{
font-family:'Adobe Garamond Pro Bold';
src:url(../fonts/AGaramondPro-BoldItalic.eot);
src:url(../fonts/AGaramondPro-BoldItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/AGaramondPro-BoldItalic.woff) format('woff'),url(../fonts/AGaramondPro-BoldItalic.ttf) format('truetype'),url(../fonts/AGaramondPro-BoldItalic.svg#fc87d529a9b2a903681f36cd7c9d9a39) format('svg');
font-style:italic;
font-weight:700
}
@font-face{
font-family:'Adobe Garamond Pro';
src:url(../fonts/AGaramondPro-Italic.eot);
src:url(../fonts/AGaramondPro-Italic.eot?#iefix) format('embedded-opentype'),url(../fonts/AGaramondPro-Italic.woff) format('woff'),url(../fonts/AGaramondPro-Italic.ttf) format('truetype'),url(../fonts/AGaramondPro-Italic.svg#e62a4d531f55b2f8bdfd398331ec8604) format('svg');
font-style:italic;
font-weight:400
}
@font-face{
font-family:'Adobe Garamond Pro';
src:url(../fonts/AGaramondPro-Regular.eot);
src:url(../fonts/AGaramondPro-Regular.eot?#iefix) format('embedded-opentype'),url(../fonts/AGaramondPro-Regular.woff) format('woff'),url(../fonts/AGaramondPro-Regular.ttf) format('truetype'),url(../fonts/AGaramondPro-Regular.svg#1eabc8b27c1d378ed9b1f5dd58b5095c) format('svg');
font-style:normal;
font-weight:400
}
:root{
--base-font-weight:400;
--base-font-size:22px/1.62;
--sys-font-family:"Adobe Garamond Pro","Georgia","Times New Roman",Times,serif;
--zh-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Droid Sans","Helvetica Neue","PingFang SC","Hiragino Sans GB","Droid Sans Fallback","Microsoft YaHei",sans-serif;
--sub-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Droid Sans","Helvetica Neue","PingFang SC","Hiragino Sans GB","Droid Sans Fallback","Microsoft YaHei",sans-serif;
--base-font-family:var(--sys-font-family),var(--zh-font-family);
--code-font-family:Menlo,Monaco,Consolas,"Courier New";
--base-color:#444443;
--emphasis-color:#222223;
--link-color:#0985ce;
--link-hover-color:#0985ce;
--figure-color:#666665;
--blockquote-color:#666664;
--code-color:#808080;
--pre-code-color:#4c4c4c
}
的范围。
答案 1 :(得分:1)
类型为ListNode
,而不是ListNode
。因为上下文很清楚,所以在LinkedList
类及其方法中仅使用LinkedList::ListNode* LinkedList::add(ListNode* aList, string val)
{
//...
}
可以正常工作,但是一旦您不在上下文中,则必须编写完整类型。
这应该有效:
count