МегаЛамерский вопрос про namespace в С++
Лучше б файлы (хоть в урезанном варианте) запостил
а как ты его объявляешь?
вот так
namespаce MyTest { class MyForm; }
можно, а вот так
class MyTest::MyForm;
- нельзя (до тех, пока компилятор не узнал, что MyForm действительно объявлен в MyTest)
Лучше б файлы (хоть в урезанном варианте) запостилКода сейчас нет. Если не получится использовать далее написанные советы - запощу, все равно - спасибо . Вот его обрывки:
Для формы MyForm ( в файле MyForm.h)
#include "Form1.h"
#Include "Point.h"
namespace MyTest{
public ref class MyForm : System::Windows::Forms
{
MyTest::Form1 f1;
MyTest::Point p;
}
}
Для формы Form1( в файле Form1.h)
#include "MyForm.h"
#Include "Point.h"
namespace MyTest{
public ref class Form1 : System::Windows::Forms
{
MyTest::MyForm mf;
MyTest::Point p;
}
}
Для формы Point( в файле Point.h)
#include "Form1.h"
#Include "MyForm.h"
namespace MyTest{
public ref class Point
{
MyTest::MyFrom mf;
MyTest::Form1 f1;
}
}
В классе Form1 и MyForm можно использовать только класс Point.
>и попытался там хотя бы объявить класс MyForm
а как ты его объявляешь?
вот так
code:--------------------------------------------------------------------------------
namespаce MyTest { class MyForm; }
--------------------------------------------------------------------------------
можно, а вот так
code:--------------------------------------------------------------------------------
class MyTest::MyForm;
--------------------------------------------------------------------------------
- нельзя (до тех, пока компилятор не узнал, что MyForm действительно объявлен в MyTest)
Понял, попробую применить, спасибо . Я просто думал, что сходу надо писать
MyTest::MyForm f1;
после чего пользоваться этим f1. Ошибся, видать.
namespace MyTest{Мда... это что, так и нужно писать?
public ref class Form1 : System::Forms
{
MyTest::MyForm mf;
MyTest::Point p;
}
}
Хоть для классов-то слово self у вас есть, или тоже надо всё время набивать имя класса целиком.
Замечательно переносимый код, одним словом.
Хоть для классов-то слово self у вас есть, или тоже надо всё время набивать имя класса целиком.Для классов у нас есть слово this. И вообще прежде чем писать такие глупости, надо читать туториалы. Кроме того, namespace в C#/C++ прекрасно рефакторится.
Для классов у нас есть слово thisУ вас this - и для классов, и для объектов?
У вас this - и для классов, и для объектов?Нет, у нас this для объектов, а для классов у нас области видимости.
Мля, сколько учеников у кохтпы...
а что за язык-то? точно ли C++, а не C#?public ref class
а то я слова ref в C++ что-то не припомню
Мда... это что, так и нужно писать?не понял что смущает?
все вроде просто и понятно написано
Смущает то, что везде надо явно указывать имя namespace. никакого ключевого слова типа ThisNamespace у вас нет?
указывать namespace явно не нужно, это здесь только чуть извращаются.
Смущает то, что везде надо явно указывать имя namespace. никакого ключевого слова типа ThisNamespace у вас нет?ну ты можешь "импортировать" видимые намспайсы и тогда указывать надо будет только при неоднозначности
текущий он вроде по умолчанию "импортирован"
здесь я так понимаю это для нас указали, чтобы нам было точно понятно что откуда
Оставить комментарий
ithtcgth
Такой вот вопрос: я создал в проекте (имя проекта - MyTest) две формы и один файл. Формы называются MyForm и Form1, файл - Point.h . В этом файле есть класс, котрый надо импортировать и использовать в вышеуказанных формах, для чего я вверху написал#include "Point.h" - все нормально, классы из этого файла могу спокойно использовать.
Но когда я написал #include "MyForm.h" в файле, где содержится код Form1 и попытался там хотя бы объявить класс MyForm , компилятор стал выдавать множество ошибок, одна из которых говорит, что MyForm не является частью namespace MyTest, хотя все файлы я поместил именно туда. Более того, выдаются подсказки, когда я набиваю MyTest:: всплывают варианты Point, Form1, MyForm - и все равно после компиляции пишет, что MyForm не является частью namespace MyTest.
Подскажите, в чем же дело...
З.Ы. namespace везде один - MyTest.