Как предоставить файл .ini для wirelesshost.ned в OMNeT ++

MyClass *myVar;
myVar = new MyClass[num];

На самом деле в этой форме вы не можете вызвать конструктор, который принимает параметр (ы). Это не допускается спецификацией языка.

Однако, если вы используете std::vector, который я рекомендую вам использовать, тогда вы можете создать вектор, вызывающий конструктор не по умолчанию, как:

#include <vector> //header file where std::vector is defined

std::vector<MyClass>  arr(num, MyClass(10,20));

Он создает вектор элементов num, каждый элемент создается вызовом copy-constructor класса, передавая ему MyClass(10,20).

Вектор также хорош, потому что теперь вам не нужно самостоятельно управлять памятью. Ни ручное распределение, ни ручное освобождение. Кроме того, вы можете узнать количество элементов, вызвав arr.size() в любое время. Вы всегда знаете, сколько элементов содержит вектор. Вы также можете добавлять элементы в любое время, просто вызвав функцию .push_back()-члена как:

arr.push_back(MyClass(20,30)); 

И теперь вы можете обращаться к элементам, так же как к вашему массиву доступа, то есть с помощью индекса:

f(arr[i]); // 0 <= i < arr.size();

Кроме того, вы можете использовать итераторы, которые облегчают идиоматическое программирование, позволяя вам использовать различные алгоритмические функции из заголовка <algorithm> как:

#include <algorithm> //header file where std::for_each is defined

std::for_each(arr.begin(), arr.end(), f);

, где f - это функция, которая принимает один аргумент типа MyClass& (или MyClass const &) в зависимости от того, что вы хотите сделать в f.

В C ++ 11 вы можете использовать lambda как:

std::for_each(arr.begin(), arr.end(), [](const MyClass & m)
                                      {
                                           //working with m 
                                      });
0
задан karel 20 March 2019 в 04:53
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: