2016-02-21 3 views
-2

Привет всем здесь некоторые части моих фрагментов кода., итерация над вектором вектора указателей

У меня есть класс Packet

Packet::Packet(
    double sending_time, 
    uint32_t seq_no, 
    uint32_t size 
) 

я создаю вектор векторов (пакетов типа)

std::vector< std::vector<Packet*> > packets_for_tx_st 

// Создание пакетов и толкающие пакеты

for (int j=0;j<params.num_hosts;j++){ 
for (uint32_t i = 0; i < params.num_packets_to_run; i++){ 
    Packet *p1 = new Packet(start_time, i, 64); // Creating packets 
    packets_for_tx_stat[j].push_back(p1);  // pushing packets 
    } 

// Прочтите пакеты назад (чтение пакетов обратно, у меня есть проблемы здесь)

for(uint32_t i=0;i<params.num_hosts;i++){ 
for(uint32_t j = 0; j < packets_for_tx_stat[i].size(); j++){ 
    std::cout<< packets_for_tx_stats[i][j]->seq_no << "\t" << packets_for_tx_stats[i][j]->start_time << "\t" << std::endl; 

У меня возникла проблема на вышеуказанном шаге. Он вызывает следующую ошибку.

error: base operand of ‘->’ has non-pointer type ‘Packet’ 

Может кто-нибудь объяснить, что мне не хватает, и правильный способ печати вектора вектора (указателей) в приведенном выше случае.

+1

Можете ли вы создать [минимальный, завершающий и проверяемый пример] (http://www.stackoverflow.com/help/mcve)? – Barry

+0

Что-то рыбное с кодом. –

+1

Компилятор говорит, что вы не показываете нам код, который он видит. –

ответ

0

Ваш код кажется прекрасным, за исключением того, что у вас есть несколько опечаток здесь и там. Вот исправленная версия.

#include <iostream> 
#include <vector> 
#include <stdint.h> 

using namespace std; 

class Packet 
{ 
public: 
    Packet(double sending_time, uint32_t seq_no, uint32_t size); 
    double sending_time; 
    uint32_t seq_no; 
    uint32_t size; 
    uint32_t start_time; 
}; 

Packet::Packet(
    double sending_time, 
    uint32_t seq_no, 
    uint32_t size 
) 
{ 
} 



int main() 
{ 
    std::vector< std::vector<Packet*> > packets_for_tx_stats; 
    for(uint32_t i=0;i<20;i++){ 
    for(uint32_t j = 0; j < packets_for_tx_stats[i].size(); j++){ 
     std::cout<< packets_for_tx_stats[i][j]->seq_no << "\t" << packets_for_tx_stats[i][j]->start_time << "\t" << std::endl; 
    } 
    } 
} 
Смежные вопросы