Я пытаюсь управлять массивом структур с использованием векторов, но продолжать получать сообщение об ошибке.Как использовать векторы C++ с пользовательской структурой?
Вектор объявлен в заголовочном файле как:
vector< TLE_Values, allocator<TLE_Values> > SavedSatellites;
который VS2013 вполне доволен.
Структура определяется как:
struct TLE_Values
{
string CatalogNum;
string SatelliteName;
string DateStr;
string TimeStr;
string Classification;
double DecayValue;
int ElsetNum;
double InclinationValue;
double RaanValue;
double EccentricityValue;
double ArgPerigeeValue;
double PerigeeAngle;
double AvgSpeed;
double Period;
int OrbitNum;
};
и инициализируется со значениями по умолчанию конструктором.
В основном коде программы, определив количество элементов I потребует (CountItemsInFile()), я пытаюсь расширить список вектора с помощью:
SavedSatellites.push_back(CountItemsInFile());
Это, однако, возвращает следующее сообщение об ошибке компилятора:
error C2664:
'void std::vector<TLE_Values,std::allocator<TLE_Values>>::push_back(const TLE_Values &)' : cannot convert argument 1 from 'int' to 'TLE_Values &&'
1> Reason: cannot convert from 'int' to 'TLE_Values'
1> No constructor could take the source type, or constructor overload resolution was ambiguous.
Другой поток предположил, что вектор необходимо инициализирован с 0, что не будет происходить с определенным пользователем типа, как это. Что мне не хватает? где я пошла не так? Как создать исходный вектор с моей структурой? Существует множество документации по использованию векторов типа (int), но не так много, если вы не используете целые числа.
Ор возможно хочет «изменить размер()». –
Согласен, но я не думаю, что они * нужны *. Кажется, они запутались в настройке «vector» для вставки и стараются ее размер до заполнения. Надеюсь, мое редактирование разъясняет это для них. – computerfreaker
@computerfreaker, если вы знаете размер, который вы всегда должны изменять, иначе вы просто тратите средства ... – BeyelerStudios