Jump to content
Sign in to follow this  
nunolevezinho

Erro ao inicializar array numa classe

Recommended Posts

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 ?

Edited by thoga31
Correcção do GeSHi

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
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 ?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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);

Edited by Bernardo Vieira

Share this post


Link to post
Share on other sites
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

  • Vote 1

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.