powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / перегрузка оператора больше
12 сообщений из 12, страница 1 из 1
перегрузка оператора больше
    #39796254
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
template <typename T> class Node {
	
	public:		
		Node<T>( T _data ){  
			data = _data;
		};

		const T& operator=(const T& rv) const {
        	data = rv.getData();
    	}

		bool operator>(const Node<T>& lv, const Node<T>& rv) {
        	return lv.getData() > rv.getData();
    	}

	private:
		T data;
};



выдает ошибку: error: ‘bool Node<T>::operator>(const Node<T>&, const Node<T>&)’ must take exactly one argument
bool operator>(const Node<T>& lv, const Node<T>& rv) {

не могу понять - что делаю не так???
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796257
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пропуслил метод
Код: plaintext
1.
2.
3.
		T getData(){
			return data;
		}
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796275
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде как получилось
Код: plaintext
1.
2.
3.
		bool operator>( const Node<T>& rv) {
        	return data > rv.getData();
     	}
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796314
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но все равно не работает
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796333
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akalend
Код: plaintext
1.
2.
3.
		bool operator>( const Node<T>& rv) const {
        	return data > rv.getData();
     	}
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796390
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akalendне могу понять - что делаю не так???если оператор - член класса, то должен быть один аргумент, а если хочется иметь оператор с двумя аргументами, то он должен быть свободной функцией, возможно другом класса
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796483
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ, сделал константным, но все равно не работает.

Код: 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.
template <typename T> class Node {
	
	public:		
		Node<T>( T _data ){  
			data = _data;
		};

		Node<T>(){};

		T getData(){
			return data;
		}


		const T& operator=(const T& rv) const {
        	data = rv.getData();
    	}

		bool operator>( const Node<T>& rv) const {
        	return (data > rv.getData());
     	}

		bool operator>=( const Node<T>& rv)  const {
        	return (data >= rv.getData());
     	}

		bool operator<( const Node<T>& rv)  const {
        	return (data < rv.getData());
     	}

	private:
		T data;
};


// сравнение
Node<int> n1(10);
Node<int> n2(20);
 if ( &n1 > &n2 ) printf("10 > 20"); 
 else printf("10 < 20");
if ()
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796494
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так работает, а вот если использовать в такой конструкции:
Код: plaintext
1.
while( i && &nd >= &elem[i] ) {...}

где elem - массив elem = new Node<T>[...]();

скорее всего я не правильно обращаюсь к элементу массива.
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796600
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akalend,

В таких случаях не требуется указывать шаблонный тип в операторах и конструкторах:

Код: plaintext
1.
2.
3.
bool operator>( const Node& rv) const {
   return data > rv.getData();
}
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796617
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akalendскорее всего я не правильно обращаюсь к элементу массива.

А зачем ты сравниваешь адреса вместо значений?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796631
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dimitry Sibiryakov]А зачем ты сравниваешь адреса вместо значений?

ясно, но если передавать значения, то не компилится,
Код: plaintext
1.
while( i && nd >= elm[i] ) {...}


In instantiation of ‘bool Node<T>::operator>=(const Node<T>&) const [with T = int]’:
heap.cpp:152:23: required from ‘void Heap<T>::push_back(T) [with T = int]’
heap.cpp:341:16: required from here
heap.cpp:44:23: error: passing ‘const Node<int>’ as ‘this’ argument of ‘T Node<T>::getData() [with T = int]’ discards qualifiers [-fpermissive]
return (data >= rv.getData());
...
Рейтинг: 0 / 0
перегрузка оператора больше
    #39796639
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
getData() тоже const объяви.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / перегрузка оператора больше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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