std::cout of string not working
std::cout of string not working
我有一个类State
,其string
数据类型称为moveType
。在我的代码的实现中,我调用setter void setMoveType(string _moveType);
,它仅用moveType = _moveType;
当我在State
的实例上调用getter string getMoveType() const;
并将其输出到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对象实际上已经被销毁并且字符串变为空(因为使用销毁的内存时为空是一种可能的选择)。
这不是一个答案,而是一个简短的例子,它的工作方式,你似乎希望它的工作方式:
#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; }
};
在你的main函数中,或者你需要一个状态向量,你可以这样写:
#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;
}
注释:
- 通过setMoveType(string s)这样的值传递参数不是
建议传递const引用。按值传递会产生a传入对象的完整副本 - 小心使用包含和名称空间,这无疑会占用额外的时间输入std::…如果您打算使用在命名空间中定义的特性在头文件中不要使用std命名空间。
- 将私有成员初始化为合理的默认值,并在类中进行初始化器列表
我对此也不确定,但您似乎将此状态存储在向量中。你能张贴代码,你如何设置元素在矢量?需要注意的是,一旦vector对象插入元素,就不能对其进行更新(除非存储指向该元素的指针)。
相关文章:
- GDB - strcmp not working: __strcmp_sse2_unaligned
- QT qScriptConnect is not working
- QDesktopServices::openUrl() not working Qt
- C++ std::set ordering not working with customer class*
- C++ SetWindowText not working
- visual studio 2012 c++ hello world - iostream not working
- getGravity not working?
- Opencv findcontours CV_RETR_EXTERNAL not working
- c++ srand() not working
- std::queue::empty() not working?
- BCB swprintf not working
- 将类型作为指向另一个类的对象的指针的泛型类-NOT WORKING
- LoadLibrary is not working
- gluUnProject not working
- C++ catch bad_alloc not working
- updatelayeredwindow not working
- OpenMP set_num_threads() is not working
- glOrtho not working
- Cuda atomicInc not working
- WinAPI DestroyWindow not working