[英]std::cout of string not working
我有一個類State
,它有一個名為moveType
的string
數據類型。 在我的代碼的實現中,我調用了一個setter void setMoveType(string _moveType);
它只用moveType = _moveType;
當我調用我的getter string getMoveType() const;
在一個State
實例上並將其輸出到cout,不顯示任何內容。
我在輸入getMoveType()
函數時大聲疾呼。 該參數確實具有正確的值,但似乎它根本沒有設置。
有人有什么主意嗎? 我覺得這在c ++中是簡單/微不足道的,我只是完全忘記了。
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);
}
在上面的代碼中, _minState和up是State
實例。 此外,我已確保我的復制構造函數和賦值運算符已被修改為包含moveType
賦值。
沒有足夠的代碼可以肯定地知道,但我有一個猜測:要么你實際上分配給“set”函數中的陰影變量而根本沒有設置class屬性,或者你的State對象實際上已經被破壞了字符串變為空(因為在使用銷毀的內存時,為空是一種可能的選項)。
我也不確定,但你似乎將這個狀態存儲在一個向量中。 您可以將代碼發布到如何在向量中設置元素嗎? 重要的是要注意,插入后不能更新向量中的元素(除非存儲指向元素的指針)。 同樣取決於你如何調用set,可能會有問題。
好吧不是答案,而是一個簡短的例子,它的工作方式似乎是你打算這樣做的:
#include <string>
class State
{
private:
std::string m_moveType;
public:
State() : m_moveType( "unknown" ) {}
std::string getMoveType() const { return m_moveType; }
void setMoveType( const std::string& moveType ) { m_moveType = moveType; }
};
在你的主要功能中,或者你需要一個狀態向量,你可以這樣寫:
#include <iostream>
#include <vector>
#include "State.h"
int main()
{
std::vector< State > states;
for( int i=0; i<10; ++i )
{
State newState;
newState.setMoveType( "state" );
states.push_back( newState );
}
// do whatever you need to do....
std::vector< State >::iterator it;
std::vector< State >::iterator end = states.end();
for( it=states.begin(); it != end; ++it )
std::cout << (*it).getMoveType() << std::endl;
return 0;
}
幾點評論:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.