powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C++/CLI, generic класс, ошибка C2676
5 сообщений из 5, страница 1 из 1
C++/CLI, generic класс, ошибка C2676
    #38218116
SeerRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При попытке компиляции данного .h

Код: plaintext
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
#pragma once

using namespace System;

generic <class T> where T:IComparable
ref struct CNode
{
	T Value;
	CNode ^Left;
	CNode ^Right;

	CNode(T Val) : Value(Val), Left(nullptr), Right(nullptr)
	{
		Console::WriteLine(L"Added node {0}", Value);
	}			

	!CNode() 
	{
		Console::WriteLine(L"Finalised node {0}", Value);
	}			

	~CNode() 
	{
		Console::WriteLine(L"Destructed node {0}", Value);
	}			
};

generic <class T> where T:IComparable
ref class CBinaryTree
{
public:
	CNode<T> ^Top;
	size_t size;

	CBinaryTree(T Value) : Top (gcnew CNode<T>(Value)), size(1) 
	{ 
		Console::WriteLine(L"Created Tree with {0}", Value); 
	}
	
	!CBinaryTree() 
	{
		Console::WriteLine(L"Finalised Tree"); 
	}

	~CBinaryTree() 
	{
		Console::WriteLine(L"Destructed Tree"); 
	}

	void Add(T Value)
	{
		CheckAdd(Top, Value);
		++size;
	}

	void Print()
	{
		Console::WriteLine(L"Size: {0}", size);
		PrintNode(Top, 0);
	}

	//template<typename T>
	static void CheckAdd(CNode<T> ^node, T Value);

	//template<typename T>
	static void PrintNode(CNode<T> ^node, size_t indent);
};

generic <class T> where T:IComparable
void CheckAdd(CNode<T> ^node, T Value)
{
	if (node->Value < Value)
		if (node->Right == nullptr)
		{
			CNode<T> ^newNode = gcnew CNode<T>(Value);
			node->Right = newNode;
		}
		else
			CheckAdd(node->Right, Value);
	else
		if (node->Left == nullptr)
		{
			CNode<T> ^newNode = gcnew CNode<T>(Value);
			node->Left = newNode;
		}
		else
			CheckAdd(node->Left, Value);
}

generic <class T> where T:IComparable
void PrintNode(CNode<T> ^node, size_t indent)
{
	if (node->Left)
		PrintNode(node->Left, indent+1);
	for (size_t i=0; i<indent; ++i)
		Console::WriteLine(L"  ");
	Console::WriteLine(L"{0}", node->Value);
	if (node->Right)
		PrintNode(node->Right, indent+1);
}



выдает ошибку

1>------ Построение начато: проект: HW9-5, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1>...\BinaryTree.h(72): error C2676: бинарный "<": "T" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

на строке
if (node->Value < Value)

Скажите пожалуйста как это исправить?
...
Рейтинг: 0 / 0
C++/CLI, generic класс, ошибка C2676
    #38218122
SeerRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сделать так:
if (node->Value->CompareTo(Value)<0)

Выдал это:
1>stdafx.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000C) CBinaryTree`1::CheckAdd
1>HW9-5.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000C) CBinaryTree`1::CheckAdd
1>AssemblyInfo.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000C) CBinaryTree`1::CheckAdd
1>stdafx.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000D) CBinaryTree`1::PrintNode
1>HW9-5.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000D) CBinaryTree`1::PrintNode
1>AssemblyInfo.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0600000D) CBinaryTree`1::PrintNode
1>...\HW9-5.exe : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 6
...
Рейтинг: 0 / 0
C++/CLI, generic класс, ошибка C2676
    #38219384
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeerRus,

Это не с++

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
C++/CLI, generic класс, ошибка C2676
    #38219388
SeerRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv ))
Visual Studio 2012, Visual C++, Консольное приложение CLR
...
Рейтинг: 0 / 0
C++/CLI, generic класс, ошибка C2676
    #38220933
SeerRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь может ответить?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C++/CLI, generic класс, ошибка C2676
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]