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

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


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

#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[] должень возвращать референцию, иначе как вы запишете вход потребителя?

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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