Нужно сделать так, чтобы в шаблонном бинарном дереве содержались объекты пользовательского класса T
и не разрушались после инициализации. Добавление в дерево осуществляется через функцию, где и создаются элементы дерева:
template <class T>
void Switch(T field)
{
ExceptionInput *e = new ExceptionInput();
Tree<T>* tree = new Tree<T>();
tree->Add(field);
char answer;
int c, i=0;
T field1;
do {
system("cls");
cout << "Input number of method" << endl;
cout << "1.Add" << endl;
cout << "2.Delete one element" << endl;
cout << "3.Look for node(return node)" << endl;
cout << "4.Search element(return true/false)" << endl;
cout << "5.Delete tree" << endl;
cout << "6.Show" << endl;
cin.clear();
cin.ignore(1000, '\n');
do {
cin>>c ;
if (c > 6 || c <= 0)
cout <<"number must be >0 and <7"<<endl;
} while (c > 6 || c <= 0);
switch (c)
{
case 1:
if (i != 0)
{
cout << "input field" << endl;
cin >> field1;
}
if(cin)
tree->Add(field1);
else cout << "Error." <<" Field must be type of "<< (char *) typeid(field).name()<< endl;
break;
case 2:
if (i != 0)
{
cout << "input field" << endl;
cin >> field1;
}
if (cin)
tree->Delete(field1);
else cout << "Error." << " Field must be type of " << (char *) typeid(field).name() << endl;
break;
case 3:
if (i != 0)
{
cout << "input field" << endl;
cin >> field1;
}
if (cin)
tree->LookForNode(tree->GetRoot(), field);
else
cout << "Error." << " Field must be type of " << (char *) typeid(field).name() << endl;
break;
case 4:
if (i != 0)
{
cout << "input field" << endl;
cin >> field1;
}
if (cin)
cout<<tree->Search(field1);
else
cout << "Error." << " Field must be type of " << (char *) typeid(field).name() << endl;
break;
case 5:tree->Delete(); break;
case 6:tree->Show(); break;
default:
break;
}
cin.clear();
cin.ignore(1000,'\n');
i++;
cout<<endl<<"Switch continue(y/n)" << endl;
cin >> answer;
} while (answer == 'y');
}
Предположу, что вы видите удаление временных объектов. Это зависит от функции Add
вашего дерева, то есть если она объявлена не вот так:
bool Tree::Add(const T & element)
{
// добавление нового узла
}
А вот так:
bool Tree::Add(T element)
{
// добавление нового узла
}
То при каждом вызове Add
будет создаваться временная копия исходного field
под именем element
, а потом после завершения функции еще и удаляться. Возможно поэтому вы видите трассировку вызовов конструкторов и деструкторов.
На самом же деле ваша проблема легко решается в отладчике.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При компиляции проекта в конфигурации Release и платформе Win32(да, во вех остальных случаях работает) получаю следующую ошибку:
Подскажите пожалуйста как правильно прописать в про файле путь к либам
Имеется матрица, и в ней необходимо выделить другим цветом (допустим зелёным) главную диагональКак это можно сделать?