2011-05-23 24 views
0
class BufferFile{ 
public: 
     BufferFile(IOBuffer &); 
     int Open(char *); 
     int Create(char *); 
     int Close(); 
     int Rewind(); 
     int Read(int recaddr = -1); 
     int Write(int recaddr = -1); 
     int Append(); 
     IOBuffer & GetBuffer(); 
    protected: 
     IOBuffer & Buffer; 
     std::fstream File; 
     int HeaderSize; 
     int ReadHeader(); 
     int WriteHeader(); 
    };  

    BufferFile::BufferFile(IOBuffer & from):Buffer(from){}  

    int BufferFile::Read(int recaddr){ 
     if(recaddr==1) return Buffer.Write(File); 
     else return Buffer.DWrite(File, recaddr); 
    } 

    int BufferFile::Append(){ 
     File.seekp(0,std::ios::end); 
     return Buffer.Write(File); 
    } 

    IOBuffer & BufferFile::GetBuffer(){ 
     return Buffer; 
    } 

    int BufferFile::ReadHeader(){ 
     return Buffer.ReadHeader(File); 
    } 

    int BufferFile::WriteHeader(){ 
     return Buffer.WriteHeader(File); 
    } 

我得到幾個錯誤形成IOBuffer場,稱這是在功能範圍「A之前預期`)」€〜&’令牌」未聲明或構造,是什麼導致這些?函數和類錯誤

這裏是所有參與這個項目的文件: Person.h!
Buffile.cpp
BuffFile.h
Delim.cpp
Delim.h
Fixfld.cpp
Fixfld.h
FixLen.cpp
FixLen.h
Iobuffer.cpp
Iobuffer.h
Length.cpp Length.h
Varlen.cpp
Varlen.h

+0

[需要一些幫助錯誤,文件系統項目的高潮](http://stackoverflow.com/questions/6092879/need-some-help-with-errors-culmination-of-a-file -system-project) – 2011-05-23 06:13:50

回答

2

我覺得你的問題是這樣的(從Buffile.h):

#ifndef IOBUFFER 
#define IOBUFFER 
#include "Iobuffer.h" 
#endif 

...這個邏輯打破了類似/冗餘邏輯,你在Iobuffer.h中有:

#ifndef IOBUFFER 
#define IOBUFFER 
class IOBuffer{ 
[...] 
#endif 

的問題是,「階級IOBuffer」在Iobuffer.h的聲明從來沒有解析,因爲編譯器值IOBUFFER內Buffile.h已經定義,因此的#ifndef IOBUFFER在Iobuffer的頂部。 h未被激活。

正確的做法是將Buffile.h修改爲僅包含#include「Iobuffer.h」行,並將其保留至Iobuffer.h的內容以執行#ifndef和#define內容。

+0

我對你的措辭有點困惑,但是明白了,它像一個魅力感謝。 – Malaken 2011-05-23 14:12:03