Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с namespace-ми, ищет функции не там где нужно 
:(
    Опции темы
soulcub
Дата 29.11.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Вызывается оператор new в методе construct, а компилятор с какого-то перепуга ищет его в неймспейсе, который был объявлен раньше и с удивлением сообщает мне, что не может найти такого оператора! Может кто сталкивался с подобной проблемой. Как сказать ему, чтоб искало в инклуде?
Код

#ifndef __IRR_ALLOCATOR_H_INCLUDED__
#define __IRR_ALLOCATOR_H_INCLUDED__

#include "irrTypes.h"
#include <new>
using namespace std;
namespace irr
{
namespace core
{
#ifdef DEBUG_CLIENTBLOCK
#undef DEBUG_CLIENTBLOCK
#define DEBUG_CLIENTBLOCK new
#endif

//! Very simple allocator implementation, containers using it can be used across dll boundaries
template<typename T>
class irrAllocator
{
public:

    //! Destructor
    virtual ~irrAllocator() {}

    //! Allocate memory for an array of objects
    T* allocate(size_t cnt)
    {
        return (T*)internal_new(cnt* sizeof(T));
    }

    //! Deallocate memory for an array of objects
    void deallocate(T* ptr)
    {
        internal_delete(ptr);
    }

    //! Construct an element
    void construct(T* ptr, const T&e)
    {
        new ((void*)ptr) T(e);
    }

    //! Destruct an element
    void destruct(T* ptr)
    {
        ptr->~T();
    }

protected:

    virtual void* internal_new(size_t cnt)
    {
        return operator new(cnt);
    }

    virtual void internal_delete(void* ptr)
    {
        operator delete(ptr);
    }

};


//! Fast allocator, only to be used in containers inside the same memory heap.
/** Containers using it are NOT able to be used it across dll boundaries. Use this
when using in an internal class or function or when compiled into a static lib */
template<typename T>
class irrAllocatorFast
{
public:

    //! Allocate memory for an array of objects
    T* allocate(size_t cnt)
    {
        return (T*)operator new(cnt* sizeof(T));
    }

    //! Deallocate memory for an array of objects
    void deallocate(T* ptr)
    {
        operator delete(ptr);
    }

    //! Construct an element
    void construct(T* ptr, const T&e)
    {
        new ((void*)ptr) T(e);
    }

    //! Destruct an element
    void destruct(T* ptr)
    {
        ptr->~T();
    }
};



#ifdef DEBUG_CLIENTBLOCK
#undef DEBUG_CLIENTBLOCK
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#endif

//! defines an allocation strategy
enum eAllocStrategy
{
    ALLOC_STRATEGY_SAFE    = 0,
    ALLOC_STRATEGY_DOUBLE  = 1,
    ALLOC_STRATEGY_SQRT    = 2
};


} // end namespace core
} // end namespace irr

#endif



Это сообщение отредактировал(а) soulcub - 29.11.2010, 18:45
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Леопольд
Дата 30.11.2010, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



soulcub, было бы неплохо увидеть что "говорит" компилятор. Или это секрет?


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
soulcub
Дата 30.11.2010, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Просто сомневаюсь, что это поможет. Компилятор не ахти.. Он показывает очень много ошибок, которые исправляются тем, чтоб он видел клас там где надо.
Код

C:/bada/1.0.0/include/eglplatform.h:92: warning: declaration 'struct Osp::Ui::Control' does not declare anything
C:/bada/1.0.0/include/eglplatform.h:94: warning: declaration 'struct Osp::Graphics::Bitmap' does not declare anything
In file included from ../src/COGLESTexture.cpp:10:
C:/bada/IrrlichtBada/inc/COGLESTexture.h:32: error: expected class-name before '{' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:36: error: expected ')' before '*' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:42: error: 'u32' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:48: error: 'core' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:48: error: ISO C++ forbids declaration of 'dimension2d' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:48: error: 'dimension2d' declared as a 'virtual' field
C:/bada/IrrlichtBada/inc/COGLESTexture.h:48: error: expected ';' before '<' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:51: error: 'core' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:51: error: ISO C++ forbids declaration of 'dimension2d' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:51: error: 'dimension2d' declared as a 'virtual' field
C:/bada/IrrlichtBada/inc/COGLESTexture.h:51: error: expected ';' before '<' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:54: error: 'E_DRIVER_TYPE' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:57: error: 'ECOLOR_FORMAT' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:60: error: 'u32' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:89: error: ISO C++ forbids declaration of 'io' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:89: error: expected ',' or '...' before '::' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:92: error: 'ECOLOR_FORMAT' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:95: error: 'IImage' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:98: error: 'u32' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:100: error: 'core' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:100: error: ISO C++ forbids declaration of 'dimension2d' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:100: error: expected ';' before '<' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:101: error: 'core' has not been declared
C:/bada/IrrlichtBada/inc/COGLESTexture.h:101: error: ISO C++ forbids declaration of 'dimension2d' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:101: error: expected ';' before '<' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:102: error: 'ECOLOR_FORMAT' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:104: error: ISO C++ forbids declaration of 'IImage' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:104: error: expected ';' before '*' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:105: error: ISO C++ forbids declaration of 'IImage' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:105: error: expected ';' before '*' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:111: error: 'u32' does not name a type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:128: error: ISO C++ forbids declaration of 'core' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:128: error: expected ',' or '...' before '::' token
In file included from ../src/COGLESTexture.cpp:10:
C:/bada/IrrlichtBada/inc/COGLESTexture.h:142: error: ISO C++ forbids declaration of 'ITexture' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:142: error: expected ';' before '*' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:153: error: ISO C++ forbids declaration of 'core' with no type
C:/bada/IrrlichtBada/inc/COGLESTexture.h:153: error: expected ',' or '...' before '::' token
C:/bada/IrrlichtBada/inc/COGLESTexture.h:164: error: 'ITexture' has not been declared
In file included from C:/bada/IrrlichtBada/inc/os.h:12,
                 from C:/bada/IrrlichtBada/inc/COGLESDriver.h:9,
                 from ../src/COGLESTexture.cpp:11:
C:/bada/IrrlichtBada/include/ILogger.h:39: error: expected class-name before '{' token
C:/bada/IrrlichtBada/include/ILogger.h:64: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/include/ILogger.h:64: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/include/ILogger.h:75: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/include/ILogger.h:75: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/include/ILogger.h:75: error: 'virtual void Osp::Graphics::Opengl::irr::ILogger::log(int)' cannot be overloaded
C:/bada/IrrlichtBada/include/ILogger.h:64: error: with 'virtual void Osp::Graphics::Opengl::irr::ILogger::log(int)'
C:/bada/IrrlichtBada/include/ILogger.h:76: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/include/ILogger.h:76: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/include/ILogger.h:76: error: 'virtual void Osp::Graphics::Opengl::irr::ILogger::log(int)' cannot be overloaded
C:/bada/IrrlichtBada/include/ILogger.h:64: error: with 'virtual void Osp::Graphics::Opengl::irr::ILogger::log(int)'
In file included from C:/bada/IrrlichtBada/inc/COGLESDriver.h:9,
                 from ../src/COGLESTexture.cpp:11:
C:/bada/IrrlichtBada/inc/os.h:26: error: 'u16' does not name a type
C:/bada/IrrlichtBada/inc/os.h:27: error: 's16' does not name a type
C:/bada/IrrlichtBada/inc/os.h:28: error: 'u32' does not name a type
C:/bada/IrrlichtBada/inc/os.h:29: error: 's32' does not name a type
C:/bada/IrrlichtBada/inc/os.h:30: error: 'f32' does not name a type
C:/bada/IrrlichtBada/inc/os.h:32: error: 'u8' does not name a type
C:/bada/IrrlichtBada/inc/os.h:33: error: 'c8' does not name a type
C:/bada/IrrlichtBada/inc/os.h:40: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/inc/os.h:40: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/inc/os.h:41: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/inc/os.h:41: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/inc/os.h:43: error: ISO C++ forbids declaration of 'c8' with no type
C:/bada/IrrlichtBada/inc/os.h:43: error: expected ',' or '...' before '*' token
C:/bada/IrrlichtBada/inc/os.h:43: error: 'static void Osp::Graphics::Opengl::irr::os::Printer::log(int)' cannot be overloaded


Это сообщение отредактировал(а) soulcub - 30.11.2010, 17:05
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
mes
Дата 30.11.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



хм.. а как связано первое сообщение с ошибками в последнем ?! или расчет на  smile ?


Это сообщение отредактировал(а) mes - 30.11.2010, 17:11


--------------------
PM MAIL WWW   Вверх
Леопольд
Дата 30.11.2010, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Уbери это из хидера, и никогда так не делай bольше, пропадает весь смысл namespace'ов. Так можно делать только в *.срр 
Код
using namespace std;


Инклюдь файлы в таком порядке: стандартные, доп. лиbы, твои хидеры. Ошиbки могут сильно поменяться. Сделай так и попроbуй скомпилировать. Выложи сюда что компилятор выдаст.
Код
#include <new>

#include "irrTypes.h"


Это что ещё такое?
Код
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)


Это сообщение отредактировал(а) Леопольд - 30.11.2010, 18:47


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
soulcub
Дата 30.11.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



А, да.. Просто в том что было в первом сообщении мы уже разобрались) Вернее не разобрались, а нахимичили.. На соплях держиться. Но смысл остался) То есть приблизительно то же самое говорилось в ошибках и тогда. Что мол не объявлен тот тип, или та то функция или тот вот клас.. Ладно) Я понял, что тут фиг кто поможет) Надо самому с бубном танцевать.. Спасибо за внимание)
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Леопольд
Дата 30.11.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(soulcub @  30.11.2010,  18:21 Найти цитируемый пост)
 Я понял, что тут фиг кто поможет)
Конечно, если вопросы игнорировать...



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
soulcub
Дата 1.12.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Цитата(Леопольд @ 30.11.2010,  18:17)
Уbери это из хидера, и никогда так не делай bольше, пропадает весь смысл namespace'ов. Так можно делать только в *.срр 
Код
using namespace std;


Инклюдь файлы в таком порядке: стандартные, доп. лиbы, твои хидеры. Ошиbки могут сильно поменяться. Сделай так и попроbуй скомпилировать. Выложи сюда что компилятор выдаст.
Код
#include <new>

#include "irrTypes.h"


Это что ещё такое?
Код
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)

Прошу прощения. Я сам просто не знаю что это) Я портирую движок. В коде не разбираюсь на столько же на сколько и все остальные.. Кстати проблемы уже как-то решились сами собой)

Это сообщение отредактировал(а) soulcub - 2.12.2010, 13:53
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1056 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.