Vector + własna klasa + Netbeans

1

Witam,
mam taki problem chcę zrobić klasę w której będzie tablica z szablonu vector składająca się z wcześniej stworzonej przeze mnie klasy
generalnie tak to wygląda

#include "Cell.h"
#include <string>
#include <vector>

class Word {
public:
    Word();
    //Word(const Word& orig);
    //virtual ~Word();
    void put( Cell a);
    int getP();
    string getW();
private:
    vector<Cell> words;
};

klasa Cell

class Cell {
public:
    Cell();
    //Cell(const Cell &orig);
    //virtual ~Cell();
    //void put(int x, int y, char Z);
    //char get(int x, int y);
    SDL_Surface *gfx;
    int x;
    int y;
    char letter;
    int point;
    int bonusLetter;
    int bonusWord;
    int number;
    bool state;
};

pracuje pod linuxem

Problemy są takie:
1* netbeans nie wykrywa mi ani stringa ani vectora przy include
2* nie wiem czy mogę używać funkcji składowych vectora razem z metodami mojej klasy

0

1* netbeans nie wykrywa mi ani stringa ani vectora przy include
brakuje ci using namespace std;
ale tak naprawdę, nie należy tego dodawać w plikach .h; jeżeli jest to plik .h, to po prostu rób std::string i std::vector.

2* nie wiem czy mogę używać funkcji składowych vectora razem z metodami mojej klasy
nie rozumiem.

0

1* netbeans nie wykrywa mi ani stringa ani vectora przy include
brakuje ci using namespace std;
ale tak naprawdę, nie należy tego dodawać w plikach .h; jeżeli jest to plik .h, to po prostu rób std::string i std::vector.

dzięki gra, buczy a przede wszystkim się kompiluje.

2* nie wiem czy mogę używać funkcji składowych vectora razem z metodami mojej klasy
nie rozumiem.

miałem na myśli czy będę mógł używać razem z push_back() i innymi funkcjami vectora, pól i metod z własnej klasy ale już doszedłem że mogę tylko nie wiem czemu podkreśla to na czerwono o0

0

miałem na myśli czy będę mógł używać razem z push_back() i innymi funkcjami vectora, pól i metod z własnej klasy ale już doszedłem że mogę tylko nie wiem czemu podkreśla to na czerwono o0

pokaż kod.

0

proszę bardzo
plik Word.h
tutaj twierdzi że nie może dołączyć <vector> ani <string>
Cannot find include file <vector>

#include "Cell.h"
#include <string>
#include <vector>

using namespace std;

class Word {
public:
    Word();
    //Word(const Word& orig);
    //virtual ~Word();
    void put( Cell a);
    int getP();
    string getW();
    void clr();
private:
    vector<Cell> CWord;
}; 

plik Word.cpp
tutak natomiast przy każdym polu, metodzie, funkcji vectora
wywala komunikat w stylu
Unable to resolve identifier clear

#include "Word.h"
#include "Alphabet.h"

using namespace std;

Word::Word() {
    CWord.clear();
}

void Word::put( Cell a){
    CWord.push_back( a);
}

int Word::getP(){
    int i;
    int bonusW=1;
    int size=CWord.size();
    int points=0;
    
    CWord.pop_back();
    
    for( i=0; i<=size; i++){
        if( CWord[i].bonusWord != 1) bonusW=CWord[i].bonusWord;
        points=points+( CWord[i].bonusLetter*CWord[i].point);
    }
    points=points*CWord[i].bonusWord;
    return points;
}

string Word::getW(){
    int i;
    int size=CWord.size();
    string w;
    
    CWord.pop_back();
    
    for( i=0; i<=size; i++){
        w=w+CWord[i].letter;
    }
    
    return w;
}

void Word::clr(){
    CWord.clear();
} 

i dla jasności klasa Cell

 #include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <stdio.h>

class Cell {
public:
    Cell();
    //Cell(const Cell &orig);
    //virtual ~Cell();
    //void put(int x, int y, char Z);
    //char get(int x, int y);
    SDL_Surface *gfx;
    int x;
    int y;
    char letter;
    int point;
    int bonusLetter;
    int bonusWord;
    int number;
    bool state;
};

jeszcze fragment main'a który odpowiada za składanie słowa

if ( event.key.keysym.sym == SDLK_RETURN ){
                    //skladanie slowa
                    words.clr();
                    for ( j=0; j<=14; j++ ){
                        for ( i=0; i<=14; i++ ){
                            if ( plansza.getL(i,j) != tempBoard.getL(i,j)){
                                words.put( plansza.get(i,j));
                            }
                        }
                    } 

generalnie push_back() działa, jednak pop_back() i clear() nie chcą

tak dla ścisłości to maja być docelowo scrabble :)

zapomniałem maina ;p

0

dobra, to chyba przez brak destruktora Cella, jednak po jego dodaniu gra się odpala do momentu wciśnięcia enter, wtedy się wykrzacza ale to już offtop ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1