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: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Harbour
À primeira vista, o que tem nessa classe destruiu a classe herdada.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3109
- 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: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 2821
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
- Curtiu: 2 vezes
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: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
