使用自己的结构在标题类中定义功能
Defining a function in a header class with using its own struct?
class List{
public:
List();
void add(int x);
void remove();
void display();
void findingEvens(Node* n, Node* &h);
private:
struct Node{
Node* next;
int data;
};
Node* head;
};
我在标题类中具有以上代码,在成员函数中
void findingEvens(Node* n, Node* &h);
问题是在主类中,它给出了以下代码的错误,除了我已经包含了list.h,
Node *result = 0;
cout << findingEvens(l, result);
l.display();
作为错误,它说
error: ‘Node’ was not declared in this scope
,但是要在此范围内声明它,我已经包含了list.h类。我错了吗?
但是,主要问题是在函数
findingEvents
的原型中给出了Node*
的错误,但是它已经定义了
您在编译器在同一文件中看到 type 。因此编译器无法理解什么是Node
在声明结构之后移动函数声明。
public:
List();
void add(int x);
void remove();
void display();
private:
struct Node{
Node* next;
int data;
};
Node* head;
void findingEvens(List::Node* n, List::Node* &h);
Node
是嵌套结构。您需要通过使用完整资格来告诉编译器在哪里可以找到它:
List::Node *result = 0;
^^^^^^^^^^^^
您需要阅读嵌套类。
尝试将FindingEvens的原型移至struct Node
的定义之后。您现在应该删除private:
。
此答案不再有用了,但是在这里固定的代码:
class List{
public:
List();
void add(int x);
void remove();
void display();
struct Node {
struct Node* next;
int data;
};
void findingEvens(Node* n, Node* &h);
private:
Node* head;
};
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- C++ - 没有自定义交换功能的移动分配运算符?
- 如何定义可变参数类模板的成员模板功能
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- C++模板功能并定义特定情况
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 功能原型,没有定义
- 如何在cmake工具链文件中设置编译功能,以便已知的自定义编译器使用target_compile_features
- 如何在C 17中定义功能组成
- 如何自定义功能行为
- 在多态性中重新定义功能(虚拟),具有不同数量的参数
- 定义功能,以便它可以接受列表或向量
- 如何在自定义功能中使用C 构建器OpenArray
- 用户定义功能的返回值的分配:性能
- 使用自己的结构在标题类中定义功能
- 自定义功能不返回正确的值
- 全部使用用户自定义功能和MPI_BOTTOM
- 如何正确定义功能并实现它们
- 重新定义功能
- c++共享库定义和取消定义功能