Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 22:58   #1
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию C++/CLI. Не могу заставить два класса видеть друг друга

Упрощенно, мне надо такое:
Код:
	ref class A
	{
	public:
		B ^b;
		void f();
		{
			b->g();
		}
	};

	ref class B
	{
	public:
		A ^a;
		void g(){
			a->f();
		}
	};
В C# аналогичный код с удовольствием бы скомпилился, но в C++/CLI не хочет - метод B::g используется до определения.

Я попытался решить это так, как это делается в нормальном C++:
Код:
class B;

class A
{
public:
	B *b;
	void f();
};

class B
{
public:
	A *a;
	void g()
		{
			a->f();
		}
};

void A::f()
{
	b->g();
}
Уродство блевотное, но в C++ работает.

Написал C++/CLI аналог:
Код:
ref class B;

	ref class A
	{
		B ^b;
		public: void f();		
	};

	ref class B
	{
		A ^a;
		public:	void g()
		{
			a->f();
		}
	};

	void A::f()
	{
		b->g();
	}
А оно почему-то отказывается работать:

И другие страшные слова.

Как выяснилось, такой простенький код также не работает:
Код:
	ref class C
	{
		public: void f();
	};

	void C::f()
	{

	}
Какого фига? Что делать?
Accepted
Хохол вне форума Ответить с цитированием
Старый 22.03.2011, 00:02   #2
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию

Какая-то странная фигня. Как выяснилось, в одних файлах моего проекта этот код работает, в других нет (Windows Forms проект, файлы - .h с формочками). От чего зависит - не могу понять.
Accepted
Хохол вне форума Ответить с цитированием
Старый 29.03.2011, 02:50   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может стоит тогда писать на шарпе?
а то С++/CLI инвалид всетаки...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.03.2011, 10:43   #4
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию

Да, писать на шарпе определенно стоит, сейчас его изучаю. C++/CLI - тот еще костыль. Просто на заказ программу делал - и надо было обязон на нем писать.
Accepted
Хохол вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 bpl ссылающиеся друг на друга. eldalex Общие вопросы Delphi 2 01.11.2010 08:21
Два класса должны использовать не статичные методы друг друга. Adis_ Общие вопросы C/C++ 4 21.05.2010 18:19
Ссылка в ячейках друг на друга ded- Microsoft Office Excel 3 10.04.2009 15:42
Наложения изображения друг на друга rudakop HTML и CSS 1 16.09.2008 03:03