簡體   English   中英

訪問指向類的指針的向量中的元素?

[英]Accessing an element in a vector of pointers to classes?

我有一個包含指向多個類的指針的向量。 這些類的定義如下:

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");
    }
}

謝謝你的幫助 :)

嘗試切換分配內存的行和使用push_back()的行。 插入可能會使std :: vector中的指針無效。

指向std :: vector和std :: list元素的指針

如果認為問題可能在於對類實例的初始化進行了研究。 據我所知,實例及其成員是通過靜態和全局作用域中的命名空間中的零值初始化的,如果您在該作用域之一上創建對象的實例,則可能導致默認情況下值為“ 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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM