2011-05-23 55 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