Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2021, 21:45   #1
VolkT
Новичок
Джуниор
 
Регистрация: 08.03.2021
Сообщений: 1
Печаль Почему функция удаляется??

У меня есть данный код:
Код:
#include<iostream>

enum curr { dollar, rubl, euro };

union MyUnion
{
	int n;
	std::string fio;
};

struct BunkC {
	MyUnion x;
	std::string data;
	int account_id = 0, account_score = 0;
	enum curr currency;
};

int main() {
	BunkC* pers = new BunkC[3];

	return 0;
}
но VS выдаёт ошибку я не понимаю почему. Помогите!!!
the default constructor of "BunkC" cannot be referenced -- it is a deleted function

методом тыка я понял что проблема в стринге, но я не понимаю почему??

Последний раз редактировалось BDA; 09.03.2021 в 06:33.
VolkT вне форума Ответить с цитированием
Старый 09.03.2021, 06:34   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,458
По умолчанию

А вам точно нужен такой странный union?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.03.2021, 08:13   #3
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 124
По умолчанию

Цитата:
Сообщение от VolkT Посмотреть сообщение
the default constructor of "BunkC" cannot be referenced -- it is a deleted function
Код:
#include<iostream>

enum curr { dollar, rubl, euro };

union MyUnion
{
	int n;
	std::string fio;
};

struct BunkC {
	MyUnion *x;
	std::string data;
	int account_id = 0, account_score = 0;
	enum curr currency;
};

int main() {
	BunkC *pers = new BunkC[3];
	
	delete []pers;

	return 0;
}
По ходу надо через указатель на union объявлять. MyUnion *x; так не ругается.
ichi вне форума Ответить с цитированием
Старый 09.03.2021, 08:17   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,773
По умолчанию

Ну видимо потому что :
Код:
Unions cannot contain a non-static data member
Статья

Стринг это же не статичный тип. И не имеет строго фиксированного размера. А вы пытаетесь объединить области памяти. Тут правильно задали вопрос, действительно ли объединение нужно??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.03.2021, 12:14   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 601
По умолчанию

VolkT, в union можно объединять только POD объекты. std::string к ним не относится

используй тип
Код:
std::variant<std::monostate,int,std::string>
Алексей1153 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему при переборе не удаляется эта буква 'c'??? Ignatella Python 14 23.07.2019 09:22
не удаляется запись - почему? cliv БД в Delphi 2 25.07.2011 22:21
Почему не работает функция? Jony Wocker Общие вопросы C/C++ 2 20.04.2010 23:01
С++. Почему удаляется последний эелемент? AxenicX Помощь студентам 5 30.11.2009 00:41
Почему не работает функция? rocky7 Общие вопросы C/C++ 2 17.02.2009 08:37

Реклама для незарегистрированных, регистрация на форуме