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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas