Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 5
Регистрация: 18.07.2012
Сообщений: 89

Как правильно взаимодействовать двум формам?

08.07.2015, 11:31. Показов 1110. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня есть класс в хедере
этот класс в этом классе собрано все для работы форм
вот проблема
в главной форме я объявляю указательная класс
потом перегружаю конструктор 2 формы с параметром указателя на этот класс
и сохраняю его
C++
1
2
//form1
aCol^ addcol = gcnew aCol(BaseData);
C++
1
2
3
4
5
6
7
8
9
10
11
12
//form2
public:
aCol(void)
{
    InitializeComponent();
}
aCol(NoteBooks* a)
{
    baseData = a;
    InitializeComponent();
}
NoteBooks * baseData;
в 1 и 2 форме инклюдится класс
тогда
компилятор мне пишет что ошибка link 2005;
как быть
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2015, 11:31
Ответы с готовыми решениями:

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

Как подключить одну таблицу базу данных MS Access к двум формам windows?
Проблема заключается в том что не понимаю,как подключить через кнопку базу данных. namespace Students { public partial class...

Как правильно переходить по формам
Добрый вечер, появился вопрос, правда дуратский, но всё же, перехожу по двум формам более пяти раз, и заметил что памяти он стал больше...

1
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
08.07.2015, 20:19
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Без проблем, в заголовке второй
формы будет текст "SomeClass"


Кстати что-то я учудил. Забыл про "правило трех".
И лучше сделать копию об'екта из другой формы.
(Иначе если мы закроем форму1, а форма2 будет открыта,
значит будем обращаться к удаленному об'екту some)
Исправил.

SomeClass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include <cstring>
class SomeClass
{
public:
    SomeClass();
    SomeClass(const SomeClass & some_);
    SomeClass &SomeClass::operator =(const SomeClass & some_);
    void  SetTestStr(const char * str);
    char* GetTestStr()  const;
    virtual ~SomeClass();
private:
    char* testStr;
};
SomeClass.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdafx.h"
#include "SomeClass.h"
 
char* SomeClass::GetTestStr() const
{
    return testStr;
}
 
void  SomeClass::SetTestStr(const char * str)
{
    delete testStr;
    testStr = new char[strlen(str) + 1];
    strcpy(testStr, str);
}
SomeClass::SomeClass()
{
    testStr = new char[1];
}
 
SomeClass::SomeClass(const SomeClass & some_)
{
    testStr = new char[strlen(some_.GetTestStr()) + 1];
    strcpy(testStr, some_.GetTestStr());
}
 
 
SomeClass &SomeClass::operator =(const SomeClass & some_)
{
    if (this != &some_)
    {
 
        delete testStr;
        testStr = new char[strlen(some_.GetTestStr()) + 1];
        strcpy(testStr, some_.GetTestStr());
    }
    return *this;
    
}
 
 
SomeClass::~SomeClass()
{
    delete testStr;
}
Form1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
#include "Form2.h"
#include "SomeClass.h"
    public:
        Form1(void)
        {
            InitializeComponent();
            some = new SomeClass();
            some->SetTestStr("SomeClass");
            form2 = gcnew Form2(some);
            form2->Show();
        }
 
    protected:
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
 
            delete some;
        }
        SomeClass * some;
Form2.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once
 
#include "SomeClass.h"
 
            Form2(void)
        {
            InitializeComponent();
        }
        Form2(SomeClass* some_)
        {
            InitializeComponent();
            some = new SomeClass(*some_);
            Text = gcnew String(some->GetTestStr());
        }
    
    public:
        SomeClass* some;
    protected:
 
        ~Form2()
        {
            if (components)
            {
                delete components;
            }
            delete some;
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.07.2015, 20:19
Помогаю со студенческими работами здесь

Как правильно потоки должны взаимодействовать друг с другом?
Добрый день. Встает вопрос по std::thread, а именно. Как несколько созданных потоков должны взаимодействовать друг с другом? Например...

Проблема Со Вьюхой (выборка По Двум Формам)
В общем ситуация такая: Есть одна Основная форма, в ней в эмбеденной вьюхе, присутствуют доки... Но они не респонсы! На вьюхе надо...

Как взаимодействовать с таблицами?
Всем доброго времени суток. Есть задача, которую я решить не могу. Есть талицы которые содержать авто id, даташтамп и несколько полей...

Как взаимодействовать с GlobalKeyHook?
Объясните тупому, как взаимодействовать с GlobalKeyHook, как перехватить нажатие клавиши L и вывести сообщение &quot;Услышал L&quot;. ...

Как взаимодействовать с сайтом?
У меня есть задача На сайте нужно по нажимать разные кнопки ввести текст скопировать текст и записать текст в массив и чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru