我不知道在这种情况下我该怎么办。
Class Build_Using_Vector : public Another
{
private:
int Thing;
vector<int> List_Elem;
public:
Build_Using_Vector(int TThing, vector<int> LList_Elem);
};
ok,这不是一个问题…第二部分仍然不是问题:
Build_Using_Vector::Build_Using_Vector(int TThing, vector<int> LList_Elem) : Another()
{
Thing = TThing;
List_Elem = LList_Elem;
}
正如我所说的,这不是一个问题。
问题就在那里,在"main"。在我的情况下,不是"main"是另一个类…但我认为是一样的……
int main()
{
Build_Using_Vector Foo(5, ???) // i don't know how to build with a multiple of element for example 5,6,7)
return 0;
}
谢谢
可以使用列表初始化。Build_Using_Vector Foo(5, ???)
Build_Using_Vector Foo(5, {5,6,7})
我还建议你在构造函数中使用所有成员初始化,并更改
Build_Using_Vector::Build_Using_Vector(int TThing, vector<int> LList_Elem) : Another()
{
Thing = TThing;
List_Elem = LList_Elem;
}
Build_Using_Vector::Build_Using_Vector(int TThing, vector<int> LList_Elem) : Another() , Thing(TThing), List_Elem(LList_Elem) {}
如果你没有符合c++ 11的编译器,那么你将不得不手动构建std::vector
。
int main ()
{
const int arr [] = {5, 6, 7} ;
const unsigned arrSize = sizeof (arr) / sizeof (arr [0]) ;
std::vector <int> v1 (arr, arr + arrSize) ;
Build_Using_Vector Foo(5, v1) ;
return 0 ;
}
或
int main ()
{
std::vector <int> v1 ;
v1.push_back (5) ;
v1.push_back (6) ;
v1.push_back (7) ;
Build_Using_Vector Foo(5, v1) ;
return 0 ;
}
或
int main ()
{
Build_Using_Vector Foo(5, CallSomeFunctionThatReturnsAnStdVector()) ;
return 0 ;
}