Eduardo Issao Ito wrote:
> 
> Einar Saukas wrote:
> > 
> > class MessageOutputStream extends ObjectOutputStream {
> >   private ByteArrayOutputStream _bos;
> >   MessageOutputStream() throws java.io.IOException {
> >     super(_bos = new ByteArrayOutputStream());  // ERRO!
> >   }
> > }
> > 
> >         ... de forma que o cliente possa usar essa classe fazendo
> > apenas isto:
> > 
> > MessageOutputStream var = new MessageOutputStream();
> 
> Isso funcionaria em C++?

        Acabei de testar e funciona sim! Olha só:

class ByteArrayOutputStream {
  public:
    ByteArrayOutputStream() {}
};

class ObjectOutputStream {
  public:
    ObjectOutputStream(ByteArrayOutputStream *) {}
};

class MessageOutputStream:ObjectOutputStream {
  private:
    ByteArrayOutputStream *_bos;
  public:
    MessageOutputStream() :
               ObjectOutputStream(_bos=new ByteArrayOutputStream()) {}
};

void main() {
  MessageOutputStream *var = new MessageOutputStream();
}

        Mas concordo com o Frederico, essas simplificações devem ter
sido feitas para facilitar o trabalho dos compiladores Java. A
compilação de programas em C++ é muito mais lenta e complexa, por
isso é até compreensível que eles consigam lidar com construções
mais sofisticadas...

        (E me desculpem por mandar código C++ para a lista de Java,
mas é que mesmo assim o assunto ainda é Java, ou mais precisamente,
a comparação entre compilação Java e C++. Acho que isso interessa a
bastante gente, por isso estou mandando essas informações aqui.)

        Um abraço,

Einar Saukas
Technical Consultant
Summa Technologies, Inc.
http://www.summa-tech.com

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a