Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 20.03.2013
Сообщений: 77

Самоудаляются поля статического объекта класса

06.12.2013, 02:39. Показов 1903. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дабы упростить понимание проблемы, немного изменю описание программы.

Есть две формы, Form1 и Form2.
И там и там подключен заголовочный файл следующего содержимого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE
 
#include <string>
#include <msclr\marshal_cppstd.h>
 
namespace Unamespace
{
    using std::string;
    
     struct Strings
    {
        string mylink;
        string name;
        string comment;
 
    };
    static Strings datagram;
}
 
#endif
И Form1 и Form2 совершенно спокойно могут работать с полями этой структуры: записывать и выцеплять оттуда данные: Unamespace::datagram.name = "что-нибудь".

Однако если в Form1 что-нибудь написать в одно из полей, затем вызывать Form2 и уже там попытаться исполнить что-то вроде
C++
1
/*какая-нибудь переменная Form2*/ = Unamespace::datagram.name
То мы обнаружим, что ВСЕ поля СТАТИЧЕСКОГО объекта класса каким-то образом успели опустеть. Каким образом и как это исправить?

P.S. Скорее всего, я что-то сильно делаю не так, сильно не пинайте.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2013, 02:39
Ответы с готовыми решениями:

Инициализация в классе статического объекта класса :)
Добрый день! Огромное спасибо за ваше внимание! Помогите разобраться с такой проблемой. Есть чисто статический класс (не нужен его объект...

Инициализация константного статического объекта - члена класса
Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть...

Инициализация статического объекта типа Х внутри класса Х
Приветствую! Прошу прощения, если вопрос не нов и давно разъяснен, возможно, искал не по тем словам, но не нашел именно то, что мне...

23
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.12.2013, 03:42
Студворк — интернет-сервис помощи студентам
Если вас интересует мой выбор, то я за WPF. Пока круче ничего не придумали.
Сам учу. Со скрипом. Писать на с# правда нужно.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
08.12.2013, 07:34
Цитата Сообщение от landgen Посмотреть сообщение
Про MFC все говорят, что говно.
Все, это кто?
кто ни разу не видел?
Цитата Сообщение от landgen Посмотреть сообщение
Я учу консольный он же нативный он же чистый c++,
каким боком язык к интерфейсу программы?
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
08.12.2013, 13:20
landgen, 1) Обратите внимание, что "поля статического объекта класса" это не то же самое, что "статические поля класса".
2) Что же касается статического объекта, "When you declare a variable or function at file scope (global and/or namespace scope), the static keyword specifies that the variable or function has internal linkage." internal linkage - то есть, если в другом файле объявить переменную(объект) с таким же именем, это будут разные объекты
Цитата Сообщение от landgen Посмотреть сообщение
Однако если в Form1 что-нибудь написать в одно из полей, затем вызывать Form2 и уже там попытаться исполнить что-то вроде
Код C++
1
/*какая-нибудь переменная Form2*/ = Unamespace::datagram.name
Попробуйте, когда записываете и когда читаете, вычислить адрес объекта. Возможно, окажется, что адреса разные. То есть записываете в один объект, а считываете из другого.
C++
1
void* p = Unamespace::datagram.name;
0
1 / 1 / 1
Регистрация: 20.03.2013
Сообщений: 77
08.12.2013, 16:56  [ТС]
Цитата Сообщение от Alex5 Посмотреть сообщение
1) Обратите внимание, что "поля статического объекта класса" это не то же самое, что "статические поля класса".
Я понимаю. Как раз-таки пользоваться статическими полями меня научили, а вот статическими объектами - нет.
Цитата Сообщение от Alex5 Посмотреть сообщение
Попробуйте, когда записываете и когда читаете, вычислить адрес объекта. Возможно, окажется, что адреса разные. То есть записываете в один объект, а считываете из другого.
Мне кажется это довольно странным, т.к. объект статический и объявляется он в хидере. Впрочем, я решил забросить это дело.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2013, 16:56
Помогаю со студенческими работами здесь

Заполнение статического поля класса с клавиатуры
Доброго времени суток, возникла проблема. Я не могу задать статическое поле с клавиатуры. Задача: добавить статическое поле и 2 метода...

Рефлексия, получить содержание поля статического класса
static class Messange { public static readonly string mes = &quot;Привет&quot;; } необходимо только по имени...

Как задать значения статического поля класса используя рефлексию?
Народ как задать значение статическому полю класса при помощи рефлексии. Есть тема...

Как получить значения статического поля класса с помощью рефлексии?
Есть библиотека классов в ней некоторый класс А. у этого класса есть статическое поле - его ID. Class A{ static int ID; } в главное...

WPF Binding поля, в качестве поля - объекта класса
Есть вопрос, как можно выполнить биндинг поля объекта класса? Для примера есть такая конструкция: new MainClass(new PartA (Name =...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru