Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 29.06.2007, 14:22   #1
Asain-Asa
 
Регистрация: 06.11.2006
Сообщений: 9
По умолчанию Трабла с написанем проги (Неработает перегрузка)

Вообще по порядку: юзаю с++, с грехом по полам прошёл уже половну книги и вот остановился на перегрузке. Но гуд. Вообщем пытался собрать пример из книги ничего не вышло. Пытался написать сам - тоже. (Ну я учусь тока и без работоспособного примера разобраться трудновато).

Вообщем после неудачных поисков решения проблемы, остановился на том чтобы попросить вас.

Вообщем текст программы:
файл array.h

Код:
#ifndef ARRAY_H
#define ARRAY_H

class Array
{
    friend ostream &operator<<(ostream &, const Array&);
    friend istream &operator>>(istream &, Array &);
public:
    Array (int = 10);
    Array (const Array &);
    ~Array ();

    int getSize() const;
    static int getArrayCount();

    const Array &operator=(const Array &);
    int operator==(const Array &) const;
    int operator!=(const Array &) const;
    int &operator[] (int);
private:
    int *ptr;
    int size;
    static int arrayCount;
};

#endif
файл array.c++

Код:
#include "iostream"
#include "stdlib.h"
#include "assert.h"
#include "array.h"

int Array::arrayCount = 0;

Array::Array(int arraySize)
{
    ++arrayCount;
    size = arraySize;
    ptr = new int[size];
    assert (ptr != 0);

    for (int i = 0; i < size; i++)
        ptr[i] = 0;
}

Array::Array(const Array &init)
{
    ++arrayCount;
    size = int.size;
    ptr = new int[size];
    assert (ptr != 0);

    for (int i = 0; i < size; i++)
        ptr[i] = init.ptr[i];
}

Array::~Array()
{
    --arrayCount;
    delete [ ] ptr;
}

int Array::getSize() const
{
    return size;
}

const Array &Array::operator=(const Array &right)
{
    if (&right != this)
    {
        delete [ ] ptr;
        size = right.size;
        ptr = new int[size];
        assert (ptr != 0);

        for (int i = 0; i < size; i++)
            ptr[i] = right.ptr[i];
    }
    return *this;
}

int Array::operator ==(const Array &right) const
{
    if (size !=right.size)
        return 0;
    for (int i = 0; i < size; i++)
        if (ptr [i] != right.ptr [i])
            return 0;

    return 1;
}

int &Array::operator !=(const Array &right) const
{
    if (size != right.size)
        return 1;
    for (int i = 0; i < size; i++)
        if (ptr [i] != right.ptr[i])
            return 1;

    return 0;
}

int &Array::operator [](int subscript)
{
    assert(0 <= subscript && subscript < size);

    return ptr[subscript];
}

int Array::getArrayCount()
{
    return arrayCount;
}

istream &operator>>(istream &input, Array &a)
{
    for (int i = 0; i < a.size; i++)
        input >> a.ptr[i];

    return input;
}

ostream &operator<<(ostream &output, const Array &a)
{
    for (int i = 0; i < a.size; i++)
    {
        output << a.ptr[i] << " ";

        if ((i+1) % 10 == 0)
            output << endl;
    }

    if (i % 10 != 0)
        output << endl;

    return output;
}
файл main.c++

Код:
#include "iostream"
#include "array.h"
//тут я не стал раздувать маин до больших размеров ограничившись всего лиш несколькими вызовами функций ради незограмождения поста

using namespace std;

void main()
{
    Array::getArrayCount();
    cout << endl;

    Array XXX(7), xxx(15);
    cout << endl;

    Array::getArrayCount();
    cout << endl;
}
Вообщем что нужно исправить для того чтобы программа зароботала? ( Скорее всего у меня много синтаксических ошибок, за что сразу извеняюсь, но так как я учусь, я почти всё перписал с учебника, и поэтому 90% ошибок могу свалить на автора и издательство ) Ну а если серъзно то мне не удалось заставить работась функции которые отвечают за перегрузку << и >>...
Орфаграфические ошибки пренадлижат WWWКорпарейшен.exe Copyright © 00 - 2050.

Последний раз редактировалось Asain-Asa; 29.06.2007 в 14:28.
Asain-Asa вне форума Ответить с цитированием
Старый 16.09.2007, 15:35   #2
TeraX
 
Регистрация: 15.09.2007
Сообщений: 4
По умолчанию

хз чё там и как там но точно знаю что
не #include <iostream>
a #include <iostream.h>
TeraX вне форума Ответить с цитированием
Старый 16.09.2007, 18:00   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,331
По умолчанию

Цитата:
Сообщение от TeraX Посмотреть сообщение
хз чё там и как там но точно знаю что
не #include <iostream>
a #include <iostream.h>
iostream тоже правильно.

#include "iostream" - вот ошибка.

Вот ещё:

#include "iostream"
#include "stdlib.h"
#include "assert.h"

А какую ошибку выдаёт? А то все телепаты ещё из отпуска не вернулись.
Carbon вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список структуры (типа база) почему неработает ??? Stark[SG!] Общие вопросы C/C++ 1 15.05.2008 15:25
Перегрузка ++ Dark_Maks Общие вопросы C/C++ 2 18.12.2007 10:27
Трабла с RaveReport5 heavy Общие вопросы Delphi 0 23.02.2007 16:14
Трабла с иконкой дисков, XP SP-2 Алекс. Софт 21 15.12.2006 16:51


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS