Перейти к содержанию
СофтФорум - всё о компьютерах и не только

помогите с с++


Рекомендуемые сообщения

#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, почему происходит такой косяк?

Ссылка на комментарий
Поделиться на другие сайты

imho operator[] должень возвращать референцию, иначе как вы запишете вход потребителя?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...