//Using g++ and ubuntu.
#include <vector>
using namespace std;
Định nghĩa một lớp:C++ vector của các lớp học với nhà thầu
class foo(){
(...)
foo(int arg1, double arg2);
}
vị thi công:
foo::foo(int arg1, double arg2){
(...) //arrays whose length depend upon arg1 and arg2
}
Tôi muốn làm điều gì đó như thế này:
vector<foo> bar(10); //error: no matching function for call to 'foo::foo()'
bar[0] = new foo(123, 4.56);
(...)
Một thay thế phương pháp (mà tôi thích ít hơn) là sử dụng push_back:
vector<foo> bar; //works
bar.push_back(new foo(123, 4.56)); //throws similar error.
//Omitting the "new" compiles but throws a "double free or corruption (fasttop)" on runtime.
Tôi muốn các phần tử khác nhau của véc tơ được xây dựng khác nhau, vì vậy tôi không muốn sử dụng "Trình tạo chuỗi lặp lại". Cần làm gì?
+1 cho một câu trả lời thực sự tốt. Nếu tôi có thể, tôi muốn cung cấp thêm một +1 cho không nói rằng bạn nên luôn luôn sử dụng std :: vector, nhưng bạn nên luôn luôn sử dụng một vector. – Simon