我不知道为什么我遇到ostream的问题。如果我使用命名空间std;它会引发更多错误,例如链接器错误。
这是我的代码,我遇到问题和错误。
virtual void Put (ostream&) const;
error C2061: syntax error : identifier 'ostream'
error C2065: 'ostream' : undeclared identifier
error C2059: syntax error : ')'
error C2143: syntax error : missing ';' before '{'
error C2447: '{' : missing function header (old-style formal list?)
error C2061: syntax error : identifier 'ostream'
error C2061: syntax error : identifier 'ostream'
这是我遇到问题的容器.h头文件
#ifndef CONTAINER_H
#define CONTAINER_H
#include <ostream>
#include <iostream>
#include "Object.h"
#include "NullObject.h"
#include "Ownership.h"
#include "Iterator.h"
#include "Visitor.h"
class Container : public virtual Object, public virtual Ownership
{
protected:
unsigned int count;
Container ();
public:
virtual unsigned int Count () const;
virtual bool IsEmpty () const;
virtual bool IsFull () const;
// virtual HashValue Hash () const;
virtual void Put (ostream&) const;
virtual Iterator& NewIterator () const;
virtual void Purge () = 0;
virtual void Accept (Visitor&) const = 0;
};
#endif
如果我使用
virtual void Put (std::ostream&) const;
它修复了错误但是,在正在进行的.cpp文件中,我在put函数中得到了相同的错误。我确实在put函数中尝试了std ::但它引发了大量的链接器错误。我试图使用namespace std;但也会引发大量的链接器错误。
#include "Container.h"
#include "NullIterator.h"
#include <ostream>
#include <iostream>
Container::Container () :
count (0)
{}
unsigned int Container::Count () const
{ return count; }
bool Container::IsEmpty () const
{ return Count () == 0; }
bool Container::IsFull () const
{ return false; }
Iterator& Container::NewIterator () const
{ return *new NullIterator (); }
void Container::Put(ostream&)const
{
return;
}
下面是我现在在container.cpp文件中得到的错误
error C2065: 'ostream' : undeclared identifier
error C2059: syntax error : ')'
error C2143: syntax error : missing ';' before '{'
error C2447: '{' : missing function header (old-style formal list?)
我试着#include fstream
我将在此感谢任何帮助。还有更多代码,但我认为你不需要看其他文件。
答案 0 :(得分:1)
也许你忘记了std命名空间。 ostream在std命名空间中声明,因此您需要在声明Container之前添加“using namepsace std”或使用范围解析(std :: ostream)。
答案 1 :(得分:0)
void Container::Put(ostream&)const
{
return;
}
我还有点新意,但你不需要变量名吗?