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

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

08.07.2015, 11:31. Показов 1105. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru