Pessoal, estou tentando desenvolver um projeto em TL++ mas estou encontrando o seguinte problema:
Estou criando minha classe da seguinte forma:
#include "protheus.ch"
class NotaFiscal
data numero as character
method new()
endclass
method new() class NotaFiscal
::Filial := ""
return self
Porém, quando instancio a classe NotaFiscal e tento acessar a propriedade numero, gera um erro informando que não é permitido acessar uma propriedade privada.
Se eu alterar a declaração da propriedade para public data numero as character dá erro de compilação.
Nessa mesma documentação, informa que é necessário que o CH msobject.ch precisa estar atualizado, acredito que você esteja com esse CH desatualizado, pois parece estar tudo correto em relação a seu exemplo público de propriedade.
Consegui compilar e utilizar de sua classe da seguinte forma:
#include "protheus.ch"
class NotaFiscal
public data numero as character
private data Filial as character
public method new()
endclass
method new() class NotaFiscal
::Filial := ""
::numero := ""
return self
Só tive que declarar também a propriedade Filial, pois estava gerando error.log e deixei o método new como público também.
Esse CH foi atualizado para que um classe possa ser compilada em TLPP, pois a classe passa por um grande processo de pré-compilação.
Verifique a atualização de seus CHs, pois já existem projetos em TLPP utilizando dos escopos de propriedades em classes.
O problema era mesmo no msobject.ch. Achei que por ter migrado para a 12.1.23 o CH já estaria atualizado. Baixei os includes mais novos no portal e funcionou. No meu caso nem precisei criar a propriedade Filial e nem declarar o construtor com public.