我有一个有两个全局向量的类。一个是结构的矢量,另一个是结构的矢量矢量。它是这样的:
class CNewDisplay:
{
protected:
//Vector of structures
struct FP
{
....
}
std::vector<FP> FP_list;
//Vector of vectors of structures
struct INSTRUCTIONS
{...
}
std::vector<INSTRUCTIONS> Instruction_list;
std::vector< std::vector<INSTRUCTIONS> > Past_Instructions;
public:
std::string loop_planes(..)
void fill_instruction_vector(...)
所以,第一个结构向量,我在loop_planes(...)
中初始化并在类公共函数中使用整个程序而没有任何问题。向量Past_Instructions
的向量,我填写一个线程函数(它不在类公共函数中,因为它在_beginthread
中使用,它需要属于void(_cdlec*)(void*)
)类型:
void py_embed (void*data){
...
CNewDisplay dlg;
dlg.fill_instruction_vector(...)
...
}
填充Past_Instructions
:
void CNewDisplay::fill_instruction_vector(...){
....
Past_Instructions.push_back(Instruction_list);
Instruction_list.clear();
//The size of the `Past_Instructions` is correct here
}
py_embed()
功能退出后,Past_Instructions
为空。我猜这与void py_embed(void)
不属于班级公共职能有关,但我不知道&# 39;理解为什么因为void fill_instruction_vector(...)
调用并填充Past_Instructions
向量,而且Past_Instructions
是全局的。有人可以解释一下吗?
注意:将向量传递给类的公共成员不起作用。