2013-06-02 2 views
1

У меня есть эта проблема, что я получаю очень чувствительный фрагмент кода, он должен хранить множества 70 x, y-координат во вложенном векторе и позже преобразовать их в массив с плавающей точкой; здесь:ошибка: «double» не является классом, структурой или типом объединения

vector<vector<vector<float> > > KnownPoints ; 
float* returnPoint = new float[knownFaces.size()*70*2]; 
    for(int i=0;i<KnownPoints.size();i++){ 
     for(int k=0;k<KnownPoints[i].size();k++){ 
      returnPoint[i*70*2+k*2] = KnownPoints[i][k][0]; 
      returnPoint[i*70*2+k*2+1] = KnownPoints[i][k][1]; 
     } 
    } 

Но я продолжаю получать эти ошибки:

/usr/include/c++/4.7/bits/stl_vector.h:1147:24: required from ‘void std::vector<_Tp, _Alloc>::_M_initialize_dispatch(_InputIterator, _InputIterator, std::__false_type) [with _InputIterator = double; _Tp = float; _Alloc = std::allocator<float>]’ 
/usr/include/c++/4.7/bits/stl_vector.h:393:4: required from ‘std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = double; _Tp = float; _Alloc = std::allocator<float>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<float>]’ 
LibEmotion.cpp:69:47: required from here 
/usr/include/c++/4.7/bits/stl_iterator_base_types.h:166:53: error: ‘double’ is not a class, struct, or union type 
/usr/include/c++/4.7/bits/stl_iterator_base_types.h:167:53: error: ‘double’ is not a class, struct, or union type 
/usr/include/c++/4.7/bits/stl_iterator_base_types.h:168:53: error: ‘double’ is not a class, struct, or union type 
/usr/include/c++/4.7/bits/stl_iterator_base_types.h:169:53: error: ‘double’ is not a class, struct, or union type 
/usr/include/c++/4.7/bits/stl_iterator_base_types.h:170:53: error: ‘double’ is not a class, struct, or union type 

Я бы очень благодарен за руку помощи, Амин


Edit1: вот фрагмент кода, который я считаю причиной этого:

vector<cv::Point> pos; 
vector<vector<float> > response; 
for (int k = 0; k < pos.size(); k++) { 
      response[k+1] = {pos[k].x,pos[k].y}; 
     } 

спасибо

+0

Что является линия 69? Что такое 'knownFaces'? –

+1

Ваш цикл 'for' никогда не будет выполнен. – chris

+1

Что вы подразумеваете под «очень чувствительной частью кода»? –

ответ

3

сообщения об ошибках являются результатом вы пытаетесь инициализировать std::vector с 2 double s:

std::vector<Something> x(somedouble, otherdouble); 

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

Поскольку в коде, который вы опубликовали, ничего подобного не отображается, мы можем только догадываться о реальной проблеме. Вам нужно сделать минимальный пример, который точно воспроизводит вашу проблему и публикует весь код в новом вопросе.

EDIT1: Да, там: response[k+1] = {pos[k].x,pos[k].y}; С x и y двойниками вместо поплавков, вы запускающие конструктор два-итератора, чтобы сделать временный вектор назначить response[k+1] вместо конструктора инициализатора-список. Изменение строки в

response[k+1].push_back(pos[k].x); 
response[k+1].push_back(pos[k].y); 

или

response[k+1] = {float(pos[k].x), float(pos[k].y)}; 
Смежные вопросы