Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2020, 14:46   #1
CyberStudent
Пользователь
 
Регистрация: 26.11.2020
Сообщений: 10
По умолчанию Сериализация в Xml, наследование

Написал код, но в нем есть ошибки, средой CRL пользуюсь впервые, помогите поправить код и привести его в работоспособное состояние (язык - С++)

Код:
#include <iostream>
#include <msclr\marshal_cppstd.h>
using namespace std;
using namespace System;
using namespace msclr::interop;
using namespace System::Collections::Generic;
using namespace System::Xml::Serialization;
using namespace System::IO;

ref class City;
ref class Village;
[Serializable]
[XmlInclude(City::typeid)]
[XmlInclude(Village::typeid)]


ref class Locality
{
public:
	String^ name;
};

[Serializable]
public ref class City:
	public Locality
{
public:
	int countCity;
	double S_City;

};

[Serializable]
public ref class Village:
	public Locality
{
public:
	int countVillage;
	double S_Village;
};


[Serializable]
public ref class Country
{
public:
	String^ nameCountry;
	List <Locality^>^lst;
};


void Menu();
void Add(Country^ country);
void Delete(Country^ country);
void Serialization(Country^ country);
Country^ Deserialization();

int main()
{
	setlocale(LC_ALL, "Russian");
	Menu();
	return 0;
}

void Menu()
{
	String^ FileName;
	FileName = "D:\\lab6.xml";
	Country^ country = gcnew Country;
	country->lst = gcnew List<Locality^>(); // если поставить число то подчеркивание пропадает


	int command;
	while (true)
	{
		system("cls");
		cout << "1.Добавить элемент\n";
		cout << "2.Удалить элемент\n";
		cout << "3.Сохранить в .xml\n";
		cout << "4.Считать из .xml\n";
		cout << "5.Выйти\n";

		cout << "\t\tВыберите действие: ";
		cin >> command;

		switch (command)
		{
		case 1:
			Add(country);
			break;
		case 2:
			Delete(country);
			break;
		case 3:
			Serialization(country);
			break;
		case 4:
			country = Deserialization();
			Print(country);
			system("pause");
			break;
		case 5:
			exit(0);
			break;
		default:
			break;
		}
	}
}

void Add(Country^ country)
{
	cout << "Что дабавляем:\n \t\t1.Город\n\t\t2.Село " << endl;
	int what;
	string tmpName;
	int tmpCount;
	double tmpS;
	cin >> what;
	switch (what)
	{
	case 1:

		City ^ tmpCity = gcnew City;
		cout << "Введите название города: ";
		cin >> tmpName;
		tmpCity->name = marshal_as<String^>(tmpName);
		cout << "Введите население города: ";
		cin >> tmpCount;
		tmpCity->countCity = tmpCount;
		cout << "Введите площадь города: ";
		cin >> tmpS;
		tmpCity->S_City = tmpS;
		country->lst->Add(tmpCity);
		break;

	case 2:

		Village ^ tmpVil = gcnew Village;
		cout << "Введите название села: ";
		cin >> tmpName;
		tmpVil->name = marshal_as<String^>(tmpName);
		cout << "Введите население села: ";
		cin >> tmpCount;
		tmpVil->countVillage = tmpCount;
		cout << "Введите площадь села: ";
		cin >> tmpS;
		tmpVil->S_Village = tmpS;
		country->lst->Add(tmpVil);
		break;

	default:
		break;
	}

	
}

void Delete(Country^ country)
{
	int ind;
	cout << "Введите индекс удаляемого объекта!" << endl;
	cin >> ind;
	country->lst->RemoveAt(ind);
	//throw gcnew System::NotImplementedException();
}

void Serialization(Country^ country)
{
	XmlSerializer^ ser = gcnew XmlSerializer(country->GetType());
	TextWriter^ writer = gcnew StreamWriter("D:\\lab6.xml");
	ser->Serialize(writer, country);
	writer->Close();


	//throw gcnew System::NotImplementedException();
}

Country^ Deserialization() {

	Country^ tmp = gcnew Country();
	XmlSerializer^ deser = gcnew XmlSerializer(tmp->GetType());
	TextReader^ reader = gcnew StreamReader("D:\\lab6.xml");
	tmp = (Country^)deser->Deserialize(reader);
	reader->Close();
	return tmp;
}

void Print(Country^ country)
{

	for (size_t i = 0; i < country->lst->Count; i++)
	{
		// вывод в консоль
	}
}
CyberStudent вне форума Ответить с цитированием
Старый 26.11.2020, 15:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Написал код, но в нем есть ошибки,
интересно, а как вы узнали что там есть ошибки.

" намек на то что было бы неплохо привести этот перечень"
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.11.2020, 16:00   #3
CyberStudent
Пользователь
 
Регистрация: 26.11.2020
Сообщений: 10
По умолчанию

evg_m,
1) среда разработки показывает
2) до сих пор не понял как вывести на экран
3) ошибка 100% в 4 той строке функции Menu();
CyberStudent вне форума Ответить с цитированием
Старый 26.11.2020, 17:33   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
1) среда разработки показывает
и что же она показывает? только пожалуйста текстом(не картинкой)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.11.2020, 21:54   #5
CyberStudent
Пользователь
 
Регистрация: 26.11.2020
Сообщений: 10
По умолчанию

evg_m,
Текстом:
1) как вывод в консоль сделать класса List^
2) 4тая строчка Menu(); - отсутствуют экземпляры конструктора соответствующие списку аргументов
3) И ошибки сборки:
Код:
1>------ Сборка начата: проект: NET_MyLab_6, Конфигурация: Debug Win32 ------
1>Main.cpp
1>c1xx : error C2338: Двухэтапный поиск по имени не поддерживается для C++/CLI и C++/CX; используйте /Zc:twoPhase-
1>c1xx : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
1>.NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>c1xx : error C2338: Двухэтапный поиск по имени не поддерживается для C++/CLI и C++/CX; используйте /Zc:twoPhase-
1>c1xx : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
1>Создание кода...
1>Сборка проекта "NET_MyLab_6.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
И что это значит? Я никогда не использовал CRL и понимаю его с трудом

Последний раз редактировалось CyberStudent; 26.11.2020 в 21:58.
CyberStudent вне форума Ответить с цитированием
Старый 26.11.2020, 22:01   #6
CyberStudent
Пользователь
 
Регистрация: 26.11.2020
Сообщений: 10
По умолчанию

evg_m,
И в интернете не могу найти вывод в консоль List^<T^>
Quid non vos occiderem fortior!
CyberStudent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на C#(интерфейсы, классы, наследование, сериализация) Mikdon Фриланс 1 13.09.2016 18:24
Сериализация XML Cancerman C# (си шарп) 2 15.05.2012 00:24
XML Сериализация ds.Dante Общие вопросы .NET 0 21.10.2009 13:09
xml сериализация ???? Maladoj Общие вопросы .NET 2 28.03.2009 12:06