little_greg Опубликовано 28 июня, 2010 Жалоба Поделиться Опубликовано 28 июня, 2010 #ifndef VEC4_H_#define VEC4_H_ #include <iostream> class Vec4 { private: float* vec; public: Vec4(int num); float operator[](int num); }; #endif #include "vec4.h"Vec4::Vec4(int num) { vec = new float[num]; for (int i = 0; i < num; i++) vec = 0; } float Vec4::operator[](int num) { return vec[num]; } #include "vec4.cpp"int main() { Vec4 v4(4); std::cin >> v4[2]; //error: no match for 'operator>>' in 'std::cin >> v4.Vec4::operator[](2)'| std::cout << v4[2]; return 0; } возникает ошибка при попытке записать значение в массив объекта, типа не перегружена операция >>, но перегружена операция индексации и ведь по идее, v4[2] - уже имеет тип float, а не Vec4, почему происходит такой косяк? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 28 июня, 2010 Жалоба Поделиться Опубликовано 28 июня, 2010 imho operator[] должень возвращать референцию, иначе как вы запишете вход потребителя? Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 28 июня, 2010 Автор Жалоба Поделиться Опубликовано 28 июня, 2010 спс, уже сам понял Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти