Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / про нэймспэсы / 6 сообщений из 6, страница 1 из 1
05.09.2006, 16:21
    #33965853
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
Привет всем, пару вопросов (ламерских вероятно).
есть код в файле х1.h:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
namespace ALLNI
{
	class ALLNIScope;
}

namespace ALLNIScope {

class AcquisitionEventSource : public AbstractEventSource {
	public:
              void test (void);
	private:
	string deviceName;
	::ALLNI::ALLNIScope *scope;

} ;

}

Теперь в x2.h тоже есть класс ALLNIScope, тоже в пространстве имён ALLNI, но полностью набитый свойствами и методами. Так вот когда я в методе void test (void); в реализации класса AcquisitionEventSource (файл x2.cpp) пишу что-то вроде
int z = scope->testfield;
Это на ура работает при условии что в классе который прописан в x2.h есть свойство testfield. В файле x2.cpp нет инклудов x2.h. В x1.h тоже. Кактак получается? И что значит в "::ALLNI::ALLNIScope *scope;" дабл-двоеточее в начале?
...
Рейтинг: 0 / 0
05.09.2006, 17:33
    #33966142
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
bemtaillВ файле x2.cpp нет инклудов x2.h. В x1.h тоже. Как так получается?может быть включен файл, в котором включен x2.h.

bemtaillдабл-двоеточее в начале?глобальный уровень.
...
Рейтинг: 0 / 0
05.09.2006, 19:46
    #33966468
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
А нельзя ли построить файл зависимостей для x[21].cpp чтобы посмотреть кто кого обманывает
...
Рейтинг: 0 / 0
06.09.2006, 12:28
    #33967621
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
maXmoможет быть включен файл, в котором включен x2.h.

туплю. В файле x1.cpp есть инклуды которые в итоге включают x2.h.

Сейчас приведу цепочку размышлений, поправте если я не прав плз.
Тогда что получается : в фале х1.h компилятор видит только что объявленный класс ALLNIScope и дает объявить ::ALLNI::ALLNIScope *scope внутри класса AcquisitionEventSource без ошибок. В тоже время в реализации AcquisitionEventSource в файле x1.cpp он раходит строчку
int z = scope->testfield;
и согласно включаемым хидерам уже смотрит НЕ на ALLNIScope который объявлен в х1.h, а на ALLNIScope который объявлен в х2.h. А так как там действительно есть свойство testfield (в отличии от ALLNIScope, который объявлен в х1.h,), то также не выдает ошибок.

авторглобальный уровень.
Понял, спсб.
...
Рейтинг: 0 / 0
06.09.2006, 12:56
    #33967750
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
bemtaillв фале х1.h компилятор видит только что объявленный класс ALLNIScopeэто, вроде, не совсем объявление, это просто метод сказать компилятору, что настоящее объявление класса будет потом. То, что находится в файле х1.h, позволяет объявлять только ссылки на объекты этого класса.
...
Рейтинг: 0 / 0
06.09.2006, 13:19
    #33967836
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про нэймспэсы
maXmo bemtaillв фале х1.h компилятор видит только что объявленный класс ALLNIScopeэто, вроде, не совсем объявление, это просто метод сказать компилятору, что настоящее объявление класса будет потом. То, что находится в файле х1.h, позволяет объявлять только ссылки на объекты этого класса.

Спасибо, все понятно.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / про нэймспэсы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]