Harbour
Moderador: Moderadores
Harbour
Alguém poderia me ajudar no problema que estou encontrando?
Estou desenvolvendo um sistema orientado a objeto e deparei-me com o problema descrito abaixo.
Quando herdo a classe PopUp em uma classe qualquer ocorre o erro em tempo de execução:
Error BASE/3002 Super class 'POPUP' does not return an object: __CLSINSTSUPER
Eis um exemplo do código:
/*******************************/
CLASS TPopUp FROM PopUp
/******************************/
HIDDEN:
DATA oPopUp, oColors AS Object
EXPORT:
METHOD New, AddPopUp, AddPrompt, AddSeparator, Modal
ENDCLASS
Estou desenvolvendo um sistema orientado a objeto e deparei-me com o problema descrito abaixo.
Quando herdo a classe PopUp em uma classe qualquer ocorre o erro em tempo de execução:
Error BASE/3002 Super class 'POPUP' does not return an object: __CLSINSTSUPER
Eis um exemplo do código:
/*******************************/
CLASS TPopUp FROM PopUp
/******************************/
HIDDEN:
DATA oPopUp, oColors AS Object
EXPORT:
METHOD New, AddPopUp, AddPrompt, AddSeparator, Modal
ENDCLASS
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Harbour
À primeira vista, o que tem nessa classe destruiu a classe herdada.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour
Se vai herdar tem que usar INHERIT
Então se essa classe PopUp existe:
CLASS TPopUp INHERIT PopUp
Então se essa classe PopUp existe:
CLASS TPopUp INHERIT PopUp
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Harbour
Olá!
Seja bem-vindo ao Fórum Labrego!
Seu exemplo de código é pequeno não sendo possível uma análise mais ampla. Obrservando a mensagem de erro, observa-se que o método construtor da classe PopUp não está retornando um objeto, como deveria fazer. Algo assim:
É este tipo de construção de código (método retornando a própria classe) que possibilita escrevermos código como:
Neste caso, o método goTop() retorna self o próprio objeto TBrowse(), que tem em seguida invocado o seu método refreshAll().
Para facilitar a análise de código fonte, o Fórum tem a "tag code" presente na barra de ferramentas da página que se abre para postar mensagens. Basta clicar no botão mostrado abaixo e colar o código entre as tags.
Para outras informações sobre formatação de mensagens, veja: Guia do BBCode
Seja bem-vindo ao Fórum Labrego!
FROM e INHERIT, em [x]Harbour, são sinônimos. Sendo assim, tanto faz.asimoes escreveu:Se vai herdar tem que usar INHERIT
Seu exemplo de código é pequeno não sendo possível uma análise mais ampla. Obrservando a mensagem de erro, observa-se que o método construtor da classe PopUp não está retornando um objeto, como deveria fazer. Algo assim:
Código: Selecionar todos
/*******************************/
CLASS PopUp
/******************************/
//
// Declarações
//
EndClass
//----------------------------------------------------------------------
Method New() Class PopUp
//
// Procedimentos
//
Return self // --> self é um objeto e representa a própria classe
//----------------------------------------------------------------------
/*******************************/
CLASS TPopUp FROM PopUp
/******************************/
HIDDEN:
DATA oPopUp, oColors AS Object
EXPORT:
// METHOD New, AddPopUp, AddPrompt, AddSeparator, Modal
METHOD New
METHOD AddPopUp
METHOD AddPrompt
METHOD AddSeparator
METHOD Modal
ENDCLASS
//----------------------------------------------------------------------
Method New() Class TPopUp
//
// Procedimentos
//
Return self // --> self é um objeto e representa a própria classe
//----------------------------------------------------------------------Código: Selecionar todos
oTBrowse:goTop():refreshAll()Para facilitar a análise de código fonte, o Fórum tem a "tag code" presente na barra de ferramentas da página que se abre para postar mensagens. Basta clicar no botão mostrado abaixo e colar o código entre as tags.
Para outras informações sobre formatação de mensagens, veja: Guia do BBCode
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Harbour
Na verdade é bem mais simples.alxsts escreveu:Seu exemplo de código é pequeno não sendo possível uma análise mais ampla.
Se ele quer desenvolver orientado a objeto, é porque ele sabe pra que serve e como funciona.
Se deu erro é porque está errado, simples assim.
Código: Selecionar todos
CLASS TPopUp INHERIT PopUp
END CLASS
Pra que serve o resto?
Quem colocou deveria saber, afinal... colocou o resto pra que?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Harbour
Olá Pessoal,
Na minha opinião, o erro está no método PopUp que não retorna um objeto. Herdar herdou, mas veja a mensagem de erro:JoséQuintas escreveu:Se deu erro é porque está errado, simples assim.
LABREGO escreveu:Error BASE/3002 Super class 'POPUP' does not return an object: __CLSINSTSUPER
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Harbour
Pegaram herança do defunto errado kkkkkkkkkkkkkkkkkkkkkkkkkkJairo Maia escreveu:Herdar herdou, mas veja a mensagem de erro:
Pela pergunta, parecia uma classe conhecida... do próprio Harbour.LABREGO escreveu:Quando herdo a classe PopUp em uma classe qualquer ocorre o erro em tempo de execução:
Que classe é essa? Ela existe e funciona?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Harbour
É isto que está chamando de classe?
Pra quem vai fazer orientado a objeto... pressupõe-se que sabe o que é classe.
E pra quem vai fazer herança, pressupõe-se que pelo menos olhou como é a classe original.
Put. que par...
Isso lembra quem pergunta sobre ADVPL....
Código: Selecionar todos
oPopUp := Popup()
oPopUp:colorSpec := cColor
oPopUp:AddItem( MenuItem( "&Prima nota", {|| NIL },, "Some msg 1" ) )
oPopUp:AddItem( MenuItem( HB_MENU_SEPARATOR_UNI ) )
E pra quem vai fazer herança, pressupõe-se que pelo menos olhou como é a classe original.
Código: Selecionar todos
FUNCTION Popup( nTop, nLeft, nBottom, nRight )
Isso lembra quem pergunta sobre ADVPL....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
