我有一个包含指向几个类的指针的向量。这些类定义如下:
class trackerSocket{
public:
~trackerSocket();
int trackerInitialize(string address);
int trackerSend(string getParams);
int trackerRecv();
be_node *responseDict;
bool working;
unsigned int interval;
string trackerid;
unsigned int complete;
unsigned int incomplete;
be_dict *peersDict;
string peersBinary;
bool dictionary;
private:
string address;
string port;
string protocol;
string page;
SOCKET ConnectSocket;
int parseAnnounce(string announce);
int parseTrackerResponse(string response);
};
向量由此行声明:
vector<trackerSocket*> trackers;
并使用以下行将类添加到向量中:
trackerSocket *temptracker = new trackerSocket();
//Initialize values in temptracker structure here (omitted)
trackers.push_back(temptracker);
//Reset temptracker
temptracker = new trackerSocket();
//Initialize values in temptracker structure here (omitted)
trackers.push_back(temptracker);
//Repeat
如何访问向量中每个类的工作变量?以下代码根本不打印,即使我知道某些类将其设置为true。
for(i = 0; i < trackers.size(); i++){
if(trackers[i]->working){
printf("Working.\n");
}
}
感谢您的帮助:)
答案 0 :(得分:0)
尝试切换分配内存的行和使用push_back()的行。插入可能会使std :: vector中的指针无效。
答案 1 :(得分:0)
如果思考问题可能在进行类实例初始化的范围内。我知道实例,因此它们的成员在名称空间,静态和全局范围内由零值初始化,如果在此范围之一上创建对象的实例,这可能导致该字段的工作是init,默认值为“0”并且我不知道为什么
for(i = 0; i < trackers.size(); i++){
if(trackers[i]->working){
printf("Working.\n");
}
}
not working as you expect. If so I offer you to use default constructor.