Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> указатель на класс, не могу понять что не так( 
:(
    Опции темы
Doc_d0s
Дата 5.11.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Суть проблемы такова(если уловили ниже можно не читать)

Есть форма, с нее вызывается другая форма, абсолютно отличная от первой, необходимо чтобы в дочерней форме был указатель на родительскую форму, ибо нужен ряд переменных с родительской формы.


[это можно не читать]
Есть класс формы
Код


public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
    private:
        CamConfDlg^        cDlg;
        PassDlg^        pDlg;
         
//          bla bla bla

}


В stdafx.h
прописываю хидеры
Код


// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
#pragma once
#include "Form1.h"
#include "PassDlg.h"
#include "CamConfDlg.h"
// TODO: reference additional headers your program requires here


тем не менее компилятор ругается на то что классы 
Код


CamConfDlg
PassDlg

не существуют...
чего не так делаю?

Это сообщение отредактировал(а) Doc_d0s - 6.11.2006, 18:08
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.11.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



В каждом .cpp обязательно нужно прописать #include на требуемые .h-ки, простого добавления в stdafx.h не хватит.


--------------------
user posted image
PM MAIL WWW   Вверх
Doc_d0s
Дата 6.11.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



фишка в том что в двух файлах класса есть инклуды на оба файла, выходит рекурсия(

--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 7.11.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Doc_d0s @  6.11.2006,  15:01 Найти цитируемый пост)
фишка в том что в двух файлах класса есть инклуды на оба файла, выходит рекурсия(

А, кажется понял, класс формы объявлен в .h и содержит объявление полей для дочерних форм, а обе дочерние ссылаются на родительскую форму.

Решается это таким образом: в Form1.h перед классом формы объявляются прототипы CamConfDlg и PassDlg:
Код
    ref class CamConfDlg;
    ref class PassDlg;

public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
    private:
        CamConfDlg^        cDlg;
        PassDlg^        pDlg;
         
//          bla bla bla

}


То же самое (объявление прототипа) нужно добавить в CamConfDlg.h и PassDlg.h


--------------------
user posted image
PM MAIL WWW   Вверх
Doc_d0s
Дата 7.11.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код


        ref class CamConfDlg;
    ref class PassDlg;
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
    private:
        CamConfDlg^        cDlg;


объявляю так.
потом делаю:
Код

cDlg=gcnew CamConfDlg(this);
                cDlg->ShowDialog();

ругается, говорит:
Код

Show::CamConfDlg::CamConfDlg' : no appropriate default constructor available

--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 7.11.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Нужно проинициализировать ссылку на CamConfDlg в конструкторе использующего его Form1:

Код
Form1(void) : cDlg()
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }


Так будет работать.


--------------------
user posted image
PM MAIL WWW   Вверх
Doc_d0s
Дата 8.11.2006, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



та же бага, можешь объяснить теоретически что надо сделать
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
nerezus
Дата 8.11.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

Репутация: 1
Всего: 43



Эм... а может MVC?  smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
mr.DUDA
Дата 8.11.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Doc_d0s @  8.11.2006,  07:36 Найти цитируемый пост)
та же бага, можешь объяснить теоретически что надо сделать

Нужно проинициализировать поле класса, а конструктор видать отсутсвует или приватный. Скинь код всех трёх форм, попробуем разобраться на конкретном примере.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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