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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 15:25   #1
Adis_
 
Регистрация: 21.05.2010
Сообщений: 3
По умолчанию Два класса должны использовать не статичные методы друг друга.

Какую задачу решаю:

На форме (Form1) создаю массив "своих" панелей (ZPanel). В панелях(ZPanle) есть текстбоксы. Мне нужно при введении информации в текстбоксы запускать функцию пересчета на форме(Form1).

В Form1 - include "ZPanel.h".

В классе ZPanel не могу добратся до до метода Form1::ReCalc(), т.к. Form1 вобще не виден в этом классе.

Как реализовать???
Adis_ вне форума Ответить с цитированием
Старый 21.05.2010, 16:30   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

передать классу ZPanel указатель на Form1?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2010, 17:39   #3
Adis_
 
Регистрация: 21.05.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
передать классу ZPanel указатель на Form1?
На сколько я знаю, чтобы это сделать в конструкторе класса ZPanel я должен прописать что-то типа:
ZPanel(Form1^ Frm)

Так вот компилятор ругается на Form1 - не видит его в классе ZPanel.
Adis_ вне форума Ответить с цитированием
Старый 21.05.2010, 17:46   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
На сколько я знаю, чтобы это сделать в конструкторе класса ZPanel я должен прописать что-то типа:
ZPanel(Form1^ Frm)
у тебя object pascal головного мозга.

Код:
ZPanel(Form1 *Frm)
в h файле я советую использовать forward declaration

Код:
class TForm;
а в cpp уже подинклудить. хотя не знаю я ваших vcl, может там какие нить стандартные хидеры с vcl-ными типами есть
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.05.2010, 18:19   #5
Adis_
 
Регистрация: 21.05.2010
Сообщений: 3
По умолчанию

Код:
//Для "разобратся" небольшую прогу написал. Смоделировал ситуацию.

#pragma once
namespace TestClass {

	using namespace System;

	ref class Form1;
	ref class ZPanel;

//////////////////////////////////////////////////////////////////
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();

		}

	protected:

		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	

	private: DevExpress::XtraEditors::SimpleButton^  simpleButton1;
	

	private:

		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		
		void InitializeComponent(void)
		{
			this->simpleButton1 = (gcnew DevExpress::XtraEditors::SimpleButton());

		}
#pragma endregion

public: void ShMess()
			{
				MessageBox::Show("Ok!");
			}

private: System::Void simpleButton1_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
			ZPanel^ ZPanelTest =  gcnew ZPanel(this); 
//-вот здесь  Ошибка	1	error C2512: 'TestClass::ZPanel' : no appropriate default constructor available	c:\projects\testclass\testclass\Form1.h	99	
Хотя конструктор есть.

			ZPanelTest->GetParFun();
		 }
	};



////////////////////////////////////////////////
 public  ref class ZPanel: public Panel
	{
	public:		
		ZPanel(Form1^ FormIn)
			{
			FormB = FormIn;
			};
			

		ZPanel(void)
			{
			};

	Form1 ^ FormB;

	public: void GetParFun()
			{
				FormB->ShMess();
			}
		
	

	};

}
//Для наглядности немного поубирал лишний код...
Что не так?

Последний раз редактировалось MaTBeu; 21.05.2010 в 23:29.
Adis_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строчки налезают друг на друга Lukker Microsoft Office Word 4 27.02.2010 07:38
Z порядок компонентов и их перекрывание друг друга Пепел Феникса Общие вопросы Delphi 6 04.05.2009 21:25
Ссылка в ячейках друг на друга ded- Microsoft Office Excel 3 10.04.2009 15:42
Наложения изображения друг на друга rudakop HTML и CSS 1 16.09.2008 03:03