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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ADVIRUS
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
#1

класс Вектор - C++

25.06.2013, 20:53. Просмотров 921. Ответов 19
Метки нет (Все метки)

всем привет.
Начинаю делать домашку :-) в классе вектор создаю метод:
cVector.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class cVector
{
public:
    cVector();              //конструктор по умолчанию
    cVector(const cVector &tmp);        //конструктор копий
    cVector(const double arr[], int size);               //конструктор c параметрами
    ~cVector();
    friend ostream& operator<<(ostream& out, const cVector & tmp);
    friend istream& operator>>(istream& in, cVector & tmp);
private:
    double *arr;    //вектор
    int size;       // размер вектора
 
};
cVector.cpp
C++
1
2
3
4
5
6
ostream& operator<<(ostream& out, const cVector & tmp)  
{
    for(int i=0;i<tmp.Length();++i)
        out << &tmp[i] << " ";
    return out;
}
Вроде все нормально.. но вот при компиляции слишком много ошибок у меня, во вложении пример.
И все цепляется к моим перегруженным операторам IO (>> <<)
Кто в курсе что не так?
0
Миниатюры
класс Вектор  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 20:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос класс Вектор (C++):

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Класс Вектор - C++
Нужна помощь в написании программы. Класс &quot;Вектор&quot;. (Чем он отличается от массива? в том что мне дали про вектора ни слова. Помогите...

Класс вектор С++ - C++
Вектор. Члены класса: 3 прямоугольные декартовые координаты. Методы: Конструктор, деструктор, метод вывода вектора, метод вычисления...

Класс вектор - C++
Здраствуйте! Помогите организовать класс вектор, в котором есть методы позволяющие инициализировать вектор, находить минимум и максимум,...

Класс-вектор в С++ - C++
Здраствуйте. Передо мной стоит задача реализовать произведение и сложение векторов. Информации, той, что я нашел, оказалось мало. Программу...

Вектор класс - C++
Всем привет!!! Вот написал программу с класами а она не правильно работеает. Пожалуйста помогоите исправить ошыбки. Сама задача:Создать...

19
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
25.06.2013, 20:58 #2
@ADVIRUS, на вскидку, в заголовочном файле нет объявлений istream и ostream (#include <iosfwd>) + они объявлены в пространстве имён std, которое надо указывать (std::istream, std::ostream).
0
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
25.06.2013, 21:05 #3

Не по теме:

Никогда не думал, что кто-то пользуется IE как основным браузером


std::ostream, #include <iostream>

и не было бы лишним увидеть реализацию данных перегруженных операторов

Добавлено через 57 секунд
Цитата Сообщение от ADVIRUS Посмотреть сообщение
out << &tmp[i] << " ";
out << tmp[i];
0
gray_fox
25.06.2013, 21:09
  #4

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Никогда не думал, что кто-то пользуется IE как основным браузером
Да он не так уж и плох вроде сейчас (на предыдущей работе было требование, что бы веб-интерфейс работал в первую очередь в осле), хотя всё равно самый неудобный, как по мне...)

0
ADVIRUS
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
26.06.2013, 10:05  [ТС] #5
Цитата Сообщение от gray_fox Посмотреть сообщение
@ADVIRUS, на вскидку, в заголовочном файле нет объявлений istream и ostream (#include <iosfwd>) + они объявлены в пространстве имён std, которое надо указывать (std::istream, std::ostream).
В файл main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "cVector.h"
#include "func.h"
#include <iostream>
#include <conio.h>
#include <ctime>
 
using namespace std;
 
void main()
{
 
}
cVector.cpp
C++
1
2
3
#include "cVector.h"
#include <iostream>
using namespace std;
Что и где еще нужно дописывать?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.06.2013, 10:13 #6
@ADVIRUS, у Вас класс объявлен в cVector.h, туда же надо и #include <iosfwd> сделать.
0
ADVIRUS
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
26.06.2013, 10:13  [ТС] #7
Цитата Сообщение от MrGluck Посмотреть сообщение

Не по теме:

Никогда не думал, что кто-то пользуется IE как основным браузером


std::ostream, #include <iostream>

и не было бы лишним увидеть реализацию данных перегруженных операторов

Добавлено через 57 секунд

out << tmp[i];
так вот я писал реализацию оператора <<

cVector.cpp
C++
1
2
3
4
5
6
ostream& operator<<(ostream& out, const cVector & tmp)  
{
    for(int i=0;i<tmp.Length();++i)
        out << &tmp[i] << " ";
    return out;
}
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
26.06.2013, 10:43 #8
@ADVIRUS,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
 
#include <iosfwd>
 
class cVector
{
public:
    cVector();              //конструктор по умолчанию
    cVector(const cVector &tmp);        //конструктор копий
    cVector(const double arr[], int size);               //конструктор c параметрами
    ~cVector();
    friend std::ostream& operator<<(std::ostream& out, const cVector & tmp);
    friend std::istream& operator>>(std::istream& in, cVector & tmp);
private:
    double *arr;    //вектор
    int size;       // размер вектора
 
};
2
ADVIRUS
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
26.06.2013, 13:31  [ТС] #9
Цитата Сообщение от gray_fox Посмотреть сообщение
@ADVIRUS,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
 
#include <iosfwd>
 
class cVector
{
public:
    cVector();              //конструктор по умолчанию
    cVector(const cVector &tmp);        //конструктор копий
    cVector(const double arr[], int size);               //конструктор c параметрами
    ~cVector();
    friend std::ostream& operator<<(std::ostream& out, const cVector & tmp);
    friend std::istream& operator>>(std::istream& in, cVector & tmp);
private:
    double *arr;    //вектор
    int size;       // размер вектора
 
};
Дописал #include <iosfwd> в файле cVector.h
Не помогло :-(
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.06.2013, 14:13 #10
@ADVIRUS, скиньте проект полностью.
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
26.06.2013, 14:53 #11

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Никогда не думал, что кто-то пользуется IE как основным браузером
Последний IE может ещё и дать фору др. бразуерам по некоторым параметрам.



@ADVIRUS, допиши реализацию при месте, всё равно friend функции, те напиши прямо в классе
C++
1
2
3
4
 friend std::ostream& operator<<(std::ostream& out, const cVector & tmp)
{
//твоя реализация
}
1
ADVIRUS
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 21
26.06.2013, 15:23  [ТС] #12
Цитата Сообщение от Tulosba Посмотреть сообщение
@ADVIRUS, скиньте проект полностью.
Оказывается надо было дописать еще:
using namespace std;

Спасибо всем - работает уже.
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
26.06.2013, 15:28 #13
Цитата Сообщение от ADVIRUS Посмотреть сообщение
Оказывается надо было дописать еще:
using namespace std;
Не обязательно, вероятно хватило бы
using std::istream;
using std::ostream;

и это было бы более правильным решением по оформлению самого файла.

Хотя нет, вижу вы их указали сразу при перегрузке, тогда у вас что-то кроме потоков используеться без указания пространства имён std, но не имея самого проекта это сложно определить.
1
voipp
0 / 0 / 0
Регистрация: 30.04.2011
Сообщений: 68
26.06.2013, 16:35 #14
Вы изначально пошли по неудачному пути проектирования.

Вот как надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
...
public:
std::ostream& print();
 
...
}
 
std::ostream& operator<< (std::ostream& s , A &a)
{
return a.print();
}
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.06.2013, 16:39 #15
@voipp, штоа? А поток вывода как print() получит?
0
26.06.2013, 16:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 16:39
Привет! Вот еще темы с ответами:

Класс Вектор - C++
Помогите пожалуйста горит индевидуалка... Создать класс векторов поддерживающий следующие операции: изменение размеров вектора,сложение...

Класс вектор - C++
необходимо написать класс вектор (в геометрическом смысле в трёхмерном пространстве) реализовать : поворот вектора вокруг осей...

Класс Вектор - C++
Здраствуйте! Может ли кто-нибудь помочь с объяснением проблемы , потому что я не знаю точно , что это берет. Это условие ....

Класс вектор - C++
Создать абстрактный тип данных - класс вектор, который имеет указатель на float, число элементов и переменную состояния. Определить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru