Форум программистов, компьютерный форум CyberForum.ru

Ошибка при обращении к методу константного объекта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализовать метод summa () для вычисление денежной суммы http://www.cyberforum.ru/cpp-beginners/thread1135738.html
Поле first — целое положительное число, номинал купюры; номинал может принимать значения 1, 2, 5, 10, 50, 100, 500. Поле second — целое положительное число, количество купюр данного достоинства. Реализовать метод summa () — вычисление денежной суммы.
C++ Заполнить двумерный массив размером n*n единицами и нулями как на шахматной доске Заполнить двумерный массив размером n*n единицами и нулями таким образом, чтобы единицы размещались так, как размещаются на шахматной доске черные поля, а нули-как белые поля. Левое нижнее поле на шахматной доске всегда черное. http://www.cyberforum.ru/cpp-beginners/thread1135732.html
C++ Дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число
дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число.
C++ Составить программу поиска четырёхзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 да
Составить программу поиска четырёхзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111.
C++ Определить пересекаются ли две прямые, заданные своими уравнениями на плоскости http://www.cyberforum.ru/cpp-beginners/thread1135722.html
Определить пересекаются ли две прямые, заданными своими уравнениями на плоскости. Если они пересекаются установить координаты точки пересечения.
C++ Линейная задача о круге в треугольнике Требования к программе: - Числовые значения переменных ввести с клавиатуры, вывод напоминания при этом обязательно; - Вывести на экран значения входных данных и окончательные результаты выполнения программы. Условие Вычислить периметр и площади вписанного и описанного кругов правильного треугольника, если известна его сторона. подробнее

Показать сообщение отдельно
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
01.04.2014, 22:28     Ошибка при обращении к методу константного объекта
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
1) а какая разница как описывать и как лучше?
Зависит от задачи, и от смысла Нельзя говорит что одно лучше, а другое хуже. Это по ситуации определяют.
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
2) написал
Вот тебе образец (семантику класса не сохранял, лень - это чисто демонстрация).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
template<class T>
class SmartArray;
 
template<class T>
SmartArray<T> operator+(SmartArray<T> const & a, SmartArray<T> const & b);
 
template<class T>
class SmartArray
{
public:
    SmartArray(T const & a) : value_(a) {}
 
    friend SmartArray operator+<T>(SmartArray const & a, SmartArray const & b);
 
private:
    T value_;
};
 
template <class T>
SmartArray<T> operator+(SmartArray<T> const & a, SmartArray<T> const & b)
{
    return SmartArray<T>(a.value_ + b.value_);
}
 
int main()
{
    SmartArray<int> a(5);
    SmartArray<int> b(5);
 
    SmartArray<int> c = a + b;
 
    return 0;
}
А вообще в твоем случае, лучше все-таки метод использовать, а не friend-функцию. У тебя же аргументы одинакового типа. А friend-функцию обычно используют, если первый аргумент оператора, например, может быть другим типом. К примеру встроенным:
C++
1
std::string operator+(char const *, std::string const &);
Вот такой оператор невозможно описать как член класса и его можно сделать френдом классу std::string.
 
Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru