Тип возврата функции - вектор в C ++ - PullRequest
0 голосов
/ 25 августа 2011

Я хочу вектор как тип функции возврата в моем коде, как,

class SocketTransportClient{
    void sendData(RMLInfoset *info){
        vector<unsigned long>::iterator blockIterator;
        vector<unsigned long> vectBlock=info->getRML(); // error :  error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty>'
    }
}

class RMLInfoset  {
    vector<unsigned int> RMLInfoset::getRML(){
        return  vectDataBlock;
    }
}

, но он показывает ошибку 'не может преобразовать из' std :: vector <_Ty> 'в' std :: vector <_Ty> '' пожалуйста, помогите мне, Спасибо.

Ответы [ 3 ]

5 голосов
/ 25 августа 2011

Ваша функция объявлена ​​как возвращающая vector<unsigned int>, но вы на самом деле пытаетесь присвоить результат vector<unsigned long>.Это разные типы и не совместимые с назначением.Измените объявление функции:

  vector<unsigned long> RMLInfoset::getRML(){

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

4 голосов
/ 25 августа 2011

Ну, отчасти проблема в том, что вы на самом деле никогда не встраиваете vector v в Myfun.

std::vector<int> Myfun() {
  std::vector<int> v;
  return v;
}

РЕДАКТИРОВАТЬ:

После редактирования вопроса все еще естьнебольшая проблема - вам нужно объявить вектор как std::vector<int>, а не просто vector<int>, как указано выше.Это потому, что вектор находится в пространстве имен std.

1 голос
/ 25 августа 2011

У вас есть три ошибки

1) Вы не использовали #include <vector>

2) Должно быть std::vector<int> v; вместо vector<int> v;

3) Вы не опубликовали весь свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...