Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C++/CLI, generic класс, ошибка C2676 / 5 сообщений из 5, страница 1 из 1
09.04.2013, 07:51
    #38218116
SeerRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++/CLI, generic класс, ошибка C2676
При попытке компиляции данного .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
09.04.2013, 08:04
    #38218122
SeerRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++/CLI, generic класс, ошибка C2676
Попробовал сделать так:
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
09.04.2013, 19:14
    #38219384
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C++/CLI, generic класс, ошибка C2676
SeerRus,

Это не с++

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


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