I have a class State that has a string data type called moveType. In the implementation of my code, I am calling a setter void setMoveType(string _moveType); and it’s implemented with just moveType = _moveType;
When I call my getter string getMoveType() const; on an instance of State and output it to cout, nothing is displayed.
I am couting upon entering the getMoveType() function. The parameter indeed has the correct value, but it appears that it’s not getting set at all.
Does anyone have any idea? I feel this is something simple/trivial in c++ that I’m just completely forgetting.
string State::getMoveType() const {
return moveType;
}
void State::setMoveType(string move_type) {
cout << "In setMoveType and param = " << move_type << endl;
moveType = move_type;
}
std::cout << vec_possibleSuccessors[i].getMoveType() << endl; // within loop;
vector<State> vec_possibleSuccessors;
if (_minState.canMoveUp()) {
up = _minState.moveUp();
up.setMoveType("UP");
up.setF(f(up));
vec_possibleSuccessors.push_back(up);
}
In the above code, _minState and up are instances of State. Also, I have made sure that my copy constructor and assignment operator have been modified to include moveType assignments.
Well not an answer but a short example that works the way you seem to intend this to work:
In your main function or were else you need a vector of States you could write this:
A few remarks:
adviseable, pass const references instead. Passing by value incurrs a
full copy of the passed object
to type std::… if you intend to use a feature defined in namespace
std, and never type using namespace std in a header file.
initializer list