stockListType.cpp: 58: созданный здесь
/usr/include/c++/4.2.1/bits/stl_algo.h:91: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:92: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:94: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:98: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:100: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
Выше я получил ошибку и хотел бы, чтобы кто-то объяснил мне, что это значит. Я решил ошибку, поставив константу перед оператором перегрузки. Моя программа была выражением на фондовом рынке, которое читало файл, который содержит строку, 5 удвоений и int. Мы сортируем программу по строковым символам и индексу. Книга поручила мне использовать векторы для хранения каждой информации. Как вы видите ниже, оператор перегрузки сравнивает каждый символ и сортирует его, используя функцию сортировки контейнеров. Мой вопрос в том, почему я должен поставить константу перед оператором перегрузки для > и <. но не для > =, < =, ==,!= операторов перегрузки.
//function was declared in stockType.h and implemented in stockType.cpp
bool operator<(const stockType& stock)//symbol is a string
{
return (symbols < stock.symbols)
}
//The function below was defined in stockListType.h and implemented in
// stockListType.cpp where I instantiated the object of stockType as a vector.
//vector<stockType> list; was defined in stockListType.h file
void insert(const& stockType item)
{
list.push_back(item);
}
void stockListType::sortStockSymbols()
{
sort(list.begin(), list.end());
}