Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

nunolevezinho

Erro ao inicializar array numa classe

Mensagens Recomendadas

nunolevezinho    1
nunolevezinho

Boas, tenho uma class chamada Spell e tenho um array de inteiros "dentro dela", quando tento compilar recebo o seguinte erro:

Error 32 error C2536: 'Spell::Spell::Spells' : cannot specify explicit initializer for arrays

Spell.h

class Spell
{
   string name;
   int ID;
   float damage;
   int type;

   int CalculateSpell(int SpellID, Hero &heroi);
   int CalculateSpell(int SpellID, Monster &Monstro);
   bool isValidSpell(int SpellID);

   int Spells[3][3] =
   {
       {
           1,
           DAMAGE, //int
           15
       },
       {
           2,
           DAMAGE, //int
           10
       },
       {
           3,
           HEAL, //int
           10
       }
   };

public:
   void Cast(int SpellID, Hero &heroi);
   void Cast(int SpellID, Monster &Monstro);
};

Terei a inicialização errada ?

Editado por thoga31
Correcção do GeSHi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

inicialização de variáveis locais de uma classe é uma funcionalidade que só apareceu no c++11

se não estás a usar c++11, terás de fazer a inicialização no construtor da classe


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nothing Forest    0
Nothing Forest

Tens aqui um exemplo de um codigo meu, que utilizei recentemente.. Não tem arrays, mas calculo que a logica seja a mesma.

class FPS
{
public:
int fps, counter;

FPS(int x = 0, int y = 0) {fps = x;counter = y;}
}

Cumps. Nothing

Editado por thoga31
GeSHi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bernardo Vieira    1
Bernardo Vieira

bom, tens que dizer se é private ou public! acho que sem isso nao dá! nunca experimentei! e outra coisa,

int CalculateSpell(int SpellID, Hero &heroi);
int CalculateSpell(int SpellID, Monster &Monstro);
bool isValidSpell(int SpellID);

isto na deveria fazer parte do public ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

bom, tens que dizer se é private ou public! acho que sem isso nao dá! nunca experimentei! e outra coisa,

por defeito, todos os métodos e parâmetros de uma classe sem especificação de acesso são privados


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bernardo Vieira    1
Bernardo Vieira

por defeito, todos os métodos e parâmetros de uma classe sem especificação de acesso são privados

ops! peço desculpa

@TOPICO

reparei noutra coisa tambem! tu repetes o nome de uma funcao, mudando apenas os parametros

int CalculateSpell(int SpellID, Hero &heroi);
int CalculateSpell(int SpellID, Monster &Monstro);

Editado por Bernardo Vieira

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

ops! peço desculpa

@TOPICO

reparei noutra coisa tambem! tu repetes o nome de uma funcao, mudando apenas os parametros

int CalculateSpell(int SpellID, Hero &heroi);
int CalculateSpell(int SpellID, Monster &Monstro);

em o overloading das funções é padrão na programação em OO, e como isto é um tópico de C++ (linguagem OOP) então está correcto


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.