2015-08-19 4 views
1

Я понятия не имею, что я должен делать в этой ситуации ..Создание вектора в качестве параметра вызова функции

Class Build_Using_Vector : public Another 
{ 
private: 
     int Thing; 
     vector<int> List_Elem; 
public: 
     Build_Using_Vector(int TThing, vector<int> LList_Elem); 
}; 

ки это не пробы ... вторая часть еще не пробы:

Build_Using_Vector::Build_Using_Vector(int TThing, vector<int> LList_Elem) : Another() 
{ 
    Thing = TThing; 
    List_Elem = LList_Elem; 
} 

Как я уже сказал, это не проблема.

Проблема есть, в «основном». В моем случае это не «главный» другой класс ... но я думаю, что это то же самое ...

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; 
} 

спасибо

+0

вы могли бы использовать [initializer_list] (http://de.cppreference.com/w/cpp/utility/initializer_list), если ваш C++ является достаточно свежим или создает временную векторную ad hoc, которая переносит значения. –

ответ

6

Вы можете использовать list initilization. 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) {} 
+0

Незначительный nitpick, но я бы также посоветовал пользователю избавиться от своего ужасного соглашения об именах для параметров и просто сделать ... Thing (Thing), List_Elem (List_Elem) ... ' – ncalmbeblpaicr0011

1

Если вы не 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 ; 
} 
+0

Да, я подумал об этом решении, но/ – user3464250

+1

Вы также можете использовать 'Build_Using_Vector Foo (5, std :: vector (arr, arr + arrSize));' – NathanOliver

Смежные вопросы