2010-11-01 1 views
1

im не уверен, почему у меня проблемы с ostream. Если я использую использование пространства имен std; он вызывает больше ошибок, чем ошибки компоновщика.ostream problems C++

Это мой код, где возникают проблемы и ошибки.

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. Я попытался выполнить std :: в функции put, но он запустил тонну ошибок компоновщика. Я попытался использовать пространство имен 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; 

} 

Heres ошибки я теперь получить в этом файле 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

Я буду признателен за любую помощь здесь. тем больше кода, но я не думаю, что вам нужно увидеть другие файлы.

ответ

1

Возможно, вы забудете пространство имен std. ostream объявляется в пространстве имен std, поэтому вам нужно добавить «using namepsace std» перед объявлением Container или использовать разрешение области (std :: ostream).

+0

Если я делаю то, что он выбрасывает все виды ошибок компоновщика – Steller

+0

Вы объявили: class Container: public virtual Object, public virtual Ownership. Почему вы используете виртуальные здесь? –

+0

Иногда для производного класса D имеет смысл только содержать только один экземпляр базового класса A. В C++ это выполняется с использованием виртуальных базовых классов: 10 класс A {...}; класс B1: виртуальная публикация A {...}; класс B2: виртуальная публикация A {...}; класс D: public B1, public B2 {...}; – Steller

0
void Container::Put(ostream&)const 

{ 
    return; 

} 

Я все еще немного новичок в этом вопросе, но вам здесь не нужно имя переменной?

+2

Нет, нет. Более того, если вы назовете неиспользуемую переменную, компилятор выдаст предупреждение. – Basilevs

 Смежные вопросы

  • Нет связанных вопросов^_^