Guest kakaroto33 Postado Fevereiro 4, 2004 Denunciar Share Postado Fevereiro 4, 2004 Ola pessoal!Estou me aventurando a aprender um pouco de c++, e econtrei umproblema que não consegui resolver. Obs: Meu teclado ainda não esta desconfigurado, acabei de trocar de HDe reinstalar o Slaskware, por isso não tem acentos.E o seguinte, estou precisando criar uma matriz de objetos dinamica e nãosei como fazer isso corretamente, so preciso ajuda na funcao DP::addCmde ver se o membro _data esta certo. Coloquei quase tudo aqui, se alguémpuder me ajudar fico feliz, se estiver muito errado, pode falar, to aprendendo.. --File: cmd.h ------------------------------------ class DPCmd { public: DPCmd(){}; DPCmd(char name[]) : _name(name){} DPCmd(DPCmd* cmd){copy(cmd);} ~DPCmd(); void copy(DPCmd* cmd){setName(cmd->_name);} void setName(char name[]); char* getName(){return _name;} char* _name; }; -- File:cmd.cpp------------------------------------ #include <string.h> #include <stdlib.h> #include "cmd.h" void DPCmd::setName(char name[]) { _name = new char[sizeof(name) + 1]; strcpy(_name,name); } DPCmd::~DPCmd() { delete[] _name; } -- File:dp.h ------------------------------------- #include "cmd.h" class DP { unsigned char _id; DPCmd* _data[]; // <-- não sei se esta certo.. short _size; short _counter; public: DP(){_size=2;_counter=0;*_data[0] = new DPCmd*[2];} //<-- aqui tb DP(unsigned char id):_id(id){DP();} ~DP(); bool addCmd( DPCmd *cmd ); DPCmd* getCmd( short index ); }; -- File:dp.cpp ---------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include "dp.h" DP::~DP(){ } bool DP::addCmd( DPCmd *cmd ) { /* Esta parte esta toda errada, não sei como fazela. */ if( _counter < _size) { _data[_counter] = new DPCmd(cmd); _counter++; }else{ printf("Increase data into 10 index.\n"); DPCmd *tmp[_size]; *_data = new DPCmd[_size+10]; for(int ct=0; ct<_size; ct++) tmp[ct] = _data[ct]; delete _data; *_data = *tmp; _size += 10; _counter++; } /* Fim da surra. */ return true; } DPCmd* DP::getCmd( short index ) { // if( index > _size ) return NULL; // return this->data_body[index]; return NULL; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Fevereiro 8, 2004 Denunciar Share Postado Fevereiro 8, 2004 Cara, você especificou no seu protótipo que está no .h que este seu método addCmd retorna um valor booleano, então no seu .cpp a função deve ter uma linha return false e outra return true. Pelo que vi, você deve fazer com que a sua função retorne um OBJETO ou um PONTEIRO, não entendi muito a funcionalidade do seu programa. Mais uma coisa: você está guardando ponteiros numa array de ponteiros nesta linha: _data[_counter] = new DPCmd(cmd). Esta linha (DPCmd* _data[] você pode especificar também DPCmd ** _data e determinar um tamanho para a sua array de ponteiros, mas não se esqueça que, se for declarar uma variável para isso, ela deve ser const. Qualquer coisa é só postar! OBS.: editei o meu post, parece que você não usou uma array de ponteiros, mas sim uma array de objetos. Em termos de funcionalidade, é melhor usar uma array de ponteiros. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest kakaroto33
Ola pessoal!
Estou me aventurando a aprender um pouco de c++, e econtrei um
problema que não consegui resolver.
Obs: Meu teclado ainda não esta desconfigurado, acabei de trocar de HD
e reinstalar o Slaskware, por isso não tem acentos.
E o seguinte, estou precisando criar uma matriz de objetos dinamica e não
sei como fazer isso corretamente, so preciso ajuda na funcao DP::addCmd
e ver se o membro _data esta certo. Coloquei quase tudo aqui, se alguém
puder me ajudar fico feliz, se estiver muito errado, pode falar, to aprendendo..
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.