Dúvidas em Structs

Spike_ash

Membro
Boas,

estou a contruir um jogo em C++ simples (só escrito) e estou a ter problemas nas Structs. O jogo está planeado para ter mais do que um inimigo e eu já construí o modelo de batalha. Gostava de saber uma maneira de poder aplicar monstros diferentes à função da batalha.

Aqui fica só um prog que fiz para assinalar as dúvidas que tenho (é só um exemplo):
Código:
#include <iostream>

using namespace std;

struct Date
{
    int nDay;
    int nMonth;
    int nYear;
};

Date one = {12, 4, 1997};
Date two = {18, 2, 2013};
Date three = {22, 10, 1980};

int change(Date x)
{
    x.nDay -= 1;
    x.nMonth -= 1;
    x.nYear -= 1;
}

int print(Date x)
{
    cout << "Date: " << x.nDay << "/" << x.nMonth << "/" << x.nYear;
}

int main()
{
    change(Date one);
    change(Date two);
    change(Date three);
    print(Date one);
    print(Date two);
    print(Date three);
    cin.get();
    cin.get();
    return 0;
}

O programa diminui um dia, um mês e um ano ao que eu tinha estipulado e faz o print... O problema está no change(Date one)... qual é a melhor maneira de realizar?

- Outra pergunta... como as 3 Dates foram declaradas fora das funções, qualquer mudança feita nas feitas não desaparece no fim da função, pois não?
 
Não leves a mal, mas estão ai uns erros básicos - inclusive de sintaxe - pelo que te aconselho a praticares e leres um pouco mais, começando por algo mais simples.

Problemas:
- change(Date one) está errado. Muda para change(one). Mas também não é isso que queres, o que queres é change(&one).
- Antes de tentares fazer o que disse em cima, tens de entender a diferença entre passagem de parametros por referência vs por valor. Também é por isso que não são reflectidas as mudanças. Não vale a pena estar aqui a explicar a coisa, aconselho-te mesmo a leres um pouco mais.
 
Back
Topo