Mar*_*tin 4 c++ conflict declaration
我正在进行这项任务,并且我继续收到一个明显先前声明的方法的错误.这是.h文件:
#ifndef DLLIST_H
#define DLLIST_H
#include <iostream>
#include <fstream>
#include <cstddef>
#include "DListNode.h"
typedef int ItemType;
class DLList
{
private:
friend std::ostream & operator<< (std::ostream & out, DLList & other);
int size;
int * head;
int * tail;
void _copy(const DLList * toCopy);
void _dealloc();
public:
DLList();
DLList(const DLList & toCopy);
~DLList();
DLList & operator=(const DLList & toCopy);
int size();
void append(ItemType item);
void insert(int index, ItemType item);
ItemType pop(int index);
ItemType pop();
const DListNode & operator[] (int idx);
};
std::ostream & operator<< (std::ostream & out, const DLList & d);
#endif
Run Code Online (Sandbox Code Playgroud)
错误被触发int size();,说它与之前的声明冲突.我知道这通常会由我多次出现,包括这个头文件,但我只是看不到它发生的地方.这些是项目中所有文件的include语句:
#include "DLList.h" // DLList.cpp
=======================================
#include "DListNode.h" // DListNode.cpp
=======================================
#include <iostream> // DListNode.h
#include <fstream>
#include <cstddef>
=======================================
#include "DLList.h" // This is the main test file
#include "DListNode.h"
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
我可以看到DListNode.h在技术上被包含两次,但DLList.h不止一次被包含在内.我只是犯了一个愚蠢的错误而没有看到它吗?(可能就是这种情况).谢谢你的帮助!
Kar*_*k T 12
这是因为你有一个名为size的成员变量.您可以通过重命名其中一个来解决此问题.
int size;
...
int size();
Run Code Online (Sandbox Code Playgroud)