【发布时间】:2013-11-12 08:53:39
【问题描述】:
G'day 伙计们,所以我决定利用 UDT 库的泛化来简化进一步的项目,但是尽管我在互联网上搜索了我的难题的可能答案,但我在声明和特定语法方面遇到了障碍。
首先,我有以下两个shell类,都是模板:
//Nodes.h
#pragma once
#include "LinkedList.h"
template <class T>
class LLNode
{
LLNode(T _data, LinkedList* parent);
private:
T data;
LLNode* next;
};
和
//LinkedList.h
#pragma once
#include "Nodes.h"
template <class T>
class LinkedList
{
LLNode* first;
LLNode* last;
int size;
LinkedList(T data);
void insert(T data, int index);
void append(T data);
void insert(LLNode* node, int index);
void append(LLNode* node);
};
现在,问题是无论我做什么,我似乎都无法解决以下错误: “错误 C2601:语法错误:标识符 'LinkedList'”关于 LLNode 模板的构造函数外壳。
我的主要问题是,如果可能的话,你如何使用模板类作为参数类型,我忽略了哪些语法错误?
【问题讨论】:
-
LLNode<T> *first, *last; -
一旦你解决了 LLNode 问题,你会发现你还有另一个问题,循环包含。 Nodes.h 包含 LinkedList.h,它再次包含 Nodes.h。那是行不通的。
-
注意“#pragma once”
-
我还修复了所有定义的
问题,但这并不能解决 LLNode 构造函数的问题 -
@user2982397 是的,因为你有循环包含,#pragma once 不能解决这个问题。最好将所有内容放在一个头文件中,但仍然很棘手。
标签: c++ function templates member