Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Abrangência
Versão 17.3.1.0 e superiores

A partir da versão 17.3.1.0 será possível sobrecarregar operadores. Isso é na definição da sua classe você poderá sobrecarregar o comportamento da Soma, da Subtração, da Comparação e da Conversão para String.




Sobrecarga.tlpp
#include "msobject.ch"
class ComplexNumber
	public data a
	public data b
	public method new()
	public OPERATOR Add (parm1)
	public OPERATOR Sub(parm1)
	public OPERATOR Compare(parm1)
	public OPERATOR ToString()
endclass

method new() class ClsTeste1

return self

//esse será o método invocado ao executar a soma de um objeto do tipo ClsTeste1 com qualquer outro tipo
operator Add(parm1) class ClsTeste1
	local ret := ComplexNumber():New()
	ret:a := self:a + parm1:a
	ret:b := self:b + parm1:b
return ret

operator Sub(parm1) class ClsTeste1
	local ret := ComplexNumber():New()
	ret:a := self:a - parm1:a
	ret:b := self:b - parm1:b
return ret

operator Compare(parm1) class ClsTeste1
conout("cheguei no Compare")
//retorna -1 se for menor, 0 se for igual e 1 se for maior
return 0

operator ToString() class ClsTeste1
return "toString"

user function teste2()
local i
local tempo
local obj := ClsTeste1():New()
local obj2 := ClsTeste1():New()
obj := obj + obj2
obj := obj - obj2
obj := obj + 1
obj := obj - 1
if (obj <= obj2)
conout("oioi")
endif
if (obj <= 1)
conout("oioi")
endif
conout(obj)
conout(cvaltochar(obj))
return







  • Sem rótulos