2012-12-04 95 views
3

我正在處理這個任務,並且我不斷收到一個明顯先前聲明的方法的錯誤。這裏是.h文件:C++:與之前的聲明衝突?

#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 

誤差以int size();被觸發,稱這與以前的聲明衝突。我知道這通常會引起我多次包括這個頭文件,但我只是不知道它發生了什麼。這些都是包括在項目中的所有文件的語句:

#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> 

我可以看到,在技術上被包含兩次DListNode.h,但無處是DLList.h包含不止一次。我只是犯了一個愚蠢的錯誤,沒有看到它? (可能是這種情況)。謝謝你的幫助!

回答

10

這是因爲你有一個成員變量也叫大小。您可以通過重命名其中一個來解決此問題。

int size; 
... 
int size(); 
+0

這樣做了,謝謝! – Martin

+0

歡迎您! –

相關問題