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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2010, 00:46   #11
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

sever-42, я знаю, как работает переопределения операторов для элементов класса.
Я пытался сделать переопределение внешнего оператора, как сказал Пепел Феникса

Пепел Феникса, я смотрел ту статью... Там вроде написано так:
Код:
type operator sign (parameters) { /*...*/ }
Но как я уже сказал - не получается =)
TwiX вне форума Ответить с цитированием
Старый 14.10.2010, 01:50   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да это внешнее.

внутреннее, пример тебе дали.
а внешнее, попробуй не знаю можно ли для стандартных типов(проверить не могу)
Код:
bool operator>(char* a,char* b)
{
    return strcmp(a,b)>0;
}
насчет ссылки там есть примеры параметров для внутреннего(внутри класса) и внешнего(глобального, вне класса)
это в таблице(последний столбик это глобальный)

тебе что надо?
определить операторы сравнения myClass>char* и char*>myClass
или именно char*>char*?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.10.2010, 17:05   #13
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Код:
именно char*>char*?
Говорю же, что пытался) пишет, что функция должна быть членом класса
TwiX вне форума Ответить с цитированием
Старый 14.10.2010, 17:06   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я тебе написал код.
именно он работает или нет?(просто я видел что ты внутри класса пытался это сделать, а надо вне всяких классов)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.10.2010, 19:19   #15
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Да он - говорит, что функция должна быть членом класса, а в классе ругается на другие параметры)
TwiX вне форума Ответить с цитированием
Старый 14.10.2010, 21:19   #16
Chris D
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 31
По умолчанию

Может Вам это было нужно..
Если ошибаюсь - поправьте...
Код:
#include "stdafx.h"
#include <iostream>

using namespace std;

class COperator {
private:
	char *temp;
public:
	COperator(const char *Data, const int Size) : temp (new char[Size]) {
		for(int index = 0; index < Size; index++) {
			temp[index] = Data[index];
		}
	}
	~COperator() { delete [] temp; }
	void Show(int Size) {
		for(int index = 0; index < Size; index++) {
			cout << temp[index] << " ";
		}
	}
	bool operator >(const COperator &cObj) {	
		if (strcmp(cObj.temp, temp) < 0) {
			return false;
		} else {
			return true;
		}
	}
};
int _tmain(int argc, _TCHAR* argv[])
{
	char primeArray[] = "qwerty";
	char slaveArray[] = "qwert";
	
	COperator sObj(primeArray, strlen(primeArray));
	COperator cObjTwo(slaveArray, strlen(slaveArray));

	if(sObj > cObjTwo) {
		cout << "YES\n";
	} else {
		cout << "NOT\n";
	}

	system("PAUSE");
	return 0;
}
Chris D вне форума Ответить с цитированием
Старый 14.10.2010, 22:38   #17
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Да говорю же, что нужно глобальное переопределение, а не в классе =\
TwiX вне форума Ответить с цитированием
Старый 14.10.2010, 23:44   #18
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Для встроенных типов нельзя.
include <Qt>
sever-42 вне форума Ответить с цитированием
Старый 15.10.2010, 11:25   #19
Chris D
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 31
По умолчанию

Перегружать встроенные типы... нельзя...
Все что можно сделать, ниже :
Код:
class COperator {
private:
	char *temp;
public:
	COperator(const char *Data, const int Size) : temp (new char[Size]) {
		for(int index = 0; index < Size; index++) {
			temp[index] = Data[index];
		}
	}
	~COperator() { delete [] temp; }
};
bool operator >(const COperator &cObj, const COperator &sObj) {	
		if (strcmp(cObj.temp, sObj.temp) < 0) ? false : true;
	}
int _tmain(int argc, _TCHAR* argv[])
{
	char primeArray[] = "qwerty";
	char slaveArray[] = "qwert";
	
	COperator sObj(primeArray, strlen(primeArray));
	COperator cObjTwo(slaveArray, strlen(slaveArray));

	if(sObj > cObjTwo) {
		cout << "YES\n";
	} else {
		cout << "NOT\n";
	}

	system("PAUSE");
	return 0;
}
В этом случае перегруженный оператор, является внешним... и принимает в качестве аргументов тип типа класс...

П.С... Переписал в блокноте, возможен неверный синтаксис... проверьте...
Chris D вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фильтр для строк Михаил2261 Microsoft Office Excel 4 27.05.2010 16:56
Аналог "Сквозных строк" для формирования итоговых строк на печать. kotyambala Microsoft Office Excel 0 05.05.2010 13:40
case для строк Sanek_ntsk Общие вопросы Delphi 5 23.03.2010 17:42
Можно ли узнать количество видимых строк в ListView\ListBox? TwiX Общие вопросы Delphi 7 03.08.2009 13:03
Номера строк для блокнота __@cmd@__ Общие вопросы Delphi 5 01.02.2009 16:36