2013-07-07 4 views
1

у меня есть прототип функции в заголовочном файле:Возврат вектор векторов

std::vector<std::vector<GenericBase* const> > allObserved(); 

и реализацию шаблонного (только так, чтобы он * с надеждой * компилировать, хотя бесполезно) как

//Accessors 
std::vector<std::vector<GenericBase* const> > GenericObserver::allObserved(){ 

    return std::vector<std::vector<GenericBase* const> >(); 
} 

и я получаю 100 ошибок от компилятора. Я удалил эти функции из обоих файлов (через комментирование), а затем все компилируется отлично. Я посмотрел документацию на vector.h на cplusplus.com, а также на другие «векторы векторных» вопросов, и никто, кажется, не сталкивался с проблемой.

Заранее благодарим за помощь.

+3

'возвращение {};' должны делать то же самое. Это может не оказаться полезной здесь после реализации функции, но это очень удобно. – chris

+1

Вы уверены, что хотите указателей 'const'? Вы не сможете многое сделать с этим. – juanchopanza

+0

@chris Спасибо за подсказку. – user27886

ответ

3

Объекты, хранящиеся в vector, должны быть назначены, что не относится к GenericBase* const. Следовательно, ошибки компиляции.

Возможно, вы хотите вместо этого указать GenericBase const*, чтобы постоянные объекты указали (а не сами указатели)? В любом случае, вы должны отказаться от квалификатора верхнего уровня const.

0

Может быть, вы могли бы попытаться удалить Конст

std::vector<std::vector<GenericBase*> > GenericObserver::allObserved() 
{ 
    return std::vector<std::vector<GenericBase*> >(); 
} 
Смежные вопросы