Saturday 14 September 2013

error: request for member ... which is of non-class type

error: request for member ... which is of non-class type

I realize the error is coming from using vectors in a custom class, but I
have been struggling how to fix them. How do I call vector methods when
its part of the class object? I'm just learning c++ so bare with me if
there are some basic mistakes. Thanks for any help!
These are the errors I am getting:
Word.cpp: In member function 'void Word::addPosition(int)':
Word.cpp:20: error: request for member 'push_back' in
'((Word*)this)->Word::positions', which is of non-class type
'std::vector<int, std::allocator<int> >*'
Word.cpp: In member function 'int Word::getPosition(int)':
Word.cpp:26: error: request for member 'size' in
'((Word*)this)->Word::positions', which is of non-class type
'std::vector<int, std::allocator<int> >*'
Word.cpp:27: error: request for member 'size' in
'((Word*)this)->Word::positions', which is of non-class type
'std::vector<int, std::allocator<int> >*'
Word.cpp:29: error: cannot convert 'std::vector<int, std::allocator<int>
>' to 'int' in return
Header
#pragma once
#include <string>
#include <vector>
class Word {
public:
Word();
~Word();
void setWord(std::string);
void addPosition(int);
std::string getWord();
int getPosition(int);
private:
std::string word;
std::vector<int> *positions;
};
Implementation
#include "Word.h"
#include <string>
#include <vector>
Word::Word() {
this->word = "";
this->positions = new std::vector<int>(5);
}
void Word::setWord(std::string s) {
this->word = s;
}
void Word::addPosition(int i) {
this->positions.push_back(i);
}
std::string Word::getWord() {
return this->word;
}
int Word::getPosition(int i) {
if (i < this->positions.size() && i > 0) {
for (int j = 0; j < this->positions.size(); i++) {
if (i == j) {
return positions[j];
}
}
}
return -1;
}

No comments:

Post a Comment