до сих пор, только ссылка, которая была близка к ответу на вопрос был таков: How do I initialize a stl vector of objects who themselves have non-trivial constructors?Как на самом деле инициализировать 2d вектор объектов из класса/конструктор
Однако, я попытался сделать это, и я до сих пор смущенный.
Соответствующий код:
Край
// Edge Class
class Edge{
public:
// std::string is used to avoid not a name type error
Edge (std::string, double);
double get_dist();
std::string get_color();
~Edge();
private:
std::string prv_color; // prv_ tags to indicate private
double prv_distance;
};
Edge::Edge (std::string color, double distance){
prv_color = color;
prv_distance = distance;
};
Graph
// Graph Class
class Graph{
public:
Graph (double, double);
double get_dist_range();
~Graph();
private:
double prv_edge_density; // how many edges connected per node
double prv_dist_range; // start from 0 to max distance
std::vector < std::vector <Edge*> > nodes; // the proper set-up of
};
// Graph constructor
Graph::Graph (double density, double max_distance){
prv_edge_density = density;
prv_dist_range = max_distance;
nodes (50, std::vector <Edge*> (50)); // THIS LINE STUMPS ME MOST
};
Как я пытался инициализировать вектор объектов указателей, я получаю эту ошибку из следующей строки:
nodes (50, std::vector <Edge*> (50)); // Error at this line
error: no match for call to ‘(std::vector<std::vector<Edge*, std::allocator<Edge*> >,
std::allocator<std::vector<Edge*, std::allocator<Edge*> > > >)
(int, std::vector<Edge*, std::allocator<Edge*> >)’
Я хотел бы посоветовать это как можно скорее.
Примечание: Предположим, что я использовал .cpp файлы и файлы .h отделить код
Вопрос, на который вы ссылаетесь, имеет ответ на равнине. – chris