Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - gepar

Страницы: Назад 1 ... 239 240 241 242 [243] 244 245 246 247 ... 431 Далее
7261
serega segas,а ничего что smd по определению не сможет крутить m3g графику + исходников мобильной cs нет в свободном доступе и сделать на сеге такую игру пираты/фанаты уж точно не могли? В общем завязывай с враньём и бурной фантазией.

7262
Разное / Re: Ваши рабочие столы
« : 20 Март 2011, 19:09:12 »
Bomfunk-MC,так рабочий же стол и есть для быстрого доступа к нужным файлам.
Nemesis_c, ну сразу видно идёт работа над хаком

7263
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 18:49:00 »
HoRRoR,воот, а почему тогда уходил на печать список запущенных/установленных приложений, информация о процессоре  (я картинку убрал так как теперь по контексту не подходит, но могу ещё раз прикрепить если ты её не видел) ?

Добавлено позже:
Кстати финальный результат моей работы:
#include <iostream>
#include <cstring>
using namespace std;


class Test
{
public:
    struct ListItem;

    // Конструктор по умолчанию
    Test(string data)
    {

        abc=new ListItem(data);
    }

    ~Test()
    {
        cout<<"DESTRUCTOR RUNS\n";
        delete abc;
    }

    Test(Test &right)
    {
        ListItem* item = right.abc;
        abc=new ListItem (item->data);
        item=item->next;
        while (item)
        {
            this->addToTail(item->data);
            item=item->next;
        }


    }

// Печать списка
void print_list()
{
    ListItem* item = this->abc;
    while(item)
    {
        cout << item->data;
        item = item->next;
        if(item) cout << " ";
    }
    cout << endl;
}

// Удаляет первые символы в строках
void assigned()
{
    ListItem* item=this->abc;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
}

//Добавляет инвертированный список
void plus_invert ()
{
    ListItem *item=this->getTail();
    while (item)
    {
        this->addToTail(item->data);
        item = item->prev;
    }
}


    ListItem* getTail()
    {
        ListItem* item = abc;
        while(item->next)
            item = item->next;
        return item;
    }

    ListItem* addToTail(const string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }

    ListItem* findLastItem(const string data)
    {
        ListItem* item = abc, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;

    }
    bool insertAfterLastItem(const string data, Test &list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list.abc->prev = last;
        last->next = list.abc;
        return true;
    }
struct ListItem
{
    string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы

    // Конструктор
    ListItem(const string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }
};
 ListItem *abc;
};




int main()
{
    Test *a=new Test("aa1");
    a->addToTail("aa2");
    a->addToTail("aa3");
    a->addToTail("aa4");
    cout << "List a: ";
    a->print_list();


    Test b("bb1");
    b.addToTail("bb2");
    b.addToTail("bb3");
    b.addToTail("bb4");
    cout << "List b: ";
    b.print_list();

    a->insertAfterLastItem("aa3", b);
    cout << "Merged: ";
    a->print_list();
    a->assigned();
    cout<<"After deleting first symbol: ";
    a->print_list();
    a->plus_invert();
    cout<<"After inverting (and append): ";
    a->print_list();
    Test c=*a;
    delete a;
    cout<<"After deleting a we still can see our elements,\nso constructor of copy work correct:\n";
    c.print_list();
    return 0;
}
Теперь уже вылетов и ситуаций когда программа иногда виснет за счёт того что освобождает уже освобождённую память нет  :)

7264
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 17:52:07 »
Цитата: HoRRoR
А что тебе мешает написать конструктор копии, в котором ты будешь нормально создавать копию?
Так я же и написал его:
   Test(Test &right)
    {
        abc= new PRICE;
        strcpy(abc->name,right.abc->name);
        strcpy(abc->shop,right.abc->shop);
        abc->cost=right.abc->cost;
    }
Цитата: HoRRoR
Можно. Структура скопируется полностью как надо, т.к. память здесь не выделяемая, а фиксированная.
Нет, ну я же переделал по твоему совету чтобы был указатель abc (ну чтобы деструктору было чем заняться  :) ) так что память теперь выделяемая.

Хотя там программа то уже как видишь работает и в ней всё ок, а вот теперь мне надо переделать ту где динамическая структура (та которая двунаправленный список), вот в ней то и начинается всё интересное.
Просто эта динам. структура (я ещё тогда переделал твой вариант вытянув все функции из структуры в класс и поправив указатели, в структуре лишь оставил конструктор по умолчанию) ведёт себя слегка странно.
 Вариант 1 всё работает хорошо:
#include <iostream>
#include <cstring>
using namespace std;


class Test
{
public:
    struct ListItem;

    // Конструктор по умолчанию
    Test(string data)
    {
        abc=new ListItem(data);
    }



// Печать списка
void print_list()
{
    ListItem* item = this->abc;
    while(item)
    {
        cout << item->data;
        item = item->next;
        if(item) cout << " ";
    }
    cout << endl;
}

// Удаляет первые символы в строках
void assigned()
{
    ListItem* item=this->abc;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
}

//Добавляет инвертированный список
void plus_invert ()
{
    ListItem *item=this->getTail();
    while (item)
    {
        this->addToTail(item->data);
        item = item->prev;
    }
}


    ListItem* getTail()
    {
        ListItem* item = abc;
        while(item->next)
            item = item->next;
        return item;
    }

    ListItem* addToTail(const string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }

    ListItem* findLastItem(const string data)
    {
        ListItem* item = abc, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;

    }
    bool insertAfterLastItem(const string data, Test list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list.abc->prev = last;
        last->next = list.abc;
        return true;
    }
struct ListItem
{
    string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы

    // Конструктор
    ListItem(const string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }

    ~ListItem()
    {
        if(next) delete next;
    }
};
 ListItem *abc;
};




int main()
{
    Test a("aa1");
    a.addToTail("aa2");
    a.addToTail("aa3");
    a.addToTail("aa4");
    cout << "List a: ";
    a.print_list();


    Test b("bb1");
    b.addToTail("bb2");
    b.addToTail("bb3");
    b.addToTail("bb4");
    cout << "List b: ";
    b.print_list();

    a.insertAfterLastItem("aa3", b);
    cout << "Merged: ";
    a.print_list();
    a.assigned();
    cout<<"After deleting first symbol: ";
    a.print_list();
    a.plus_invert();
    cout<<"After inverting (and append): ";
    a.print_list();
    return 0;
}


И тут я добавляю деструктор  что удаляет мой указатель abc на структру ...
#include <iostream>
#include <cstring>
using namespace std;


class Test
{
public:
    struct ListItem;

    // Конструктор по умолчанию
    Test(string data)
    {
        abc=new ListItem(data);
    }

    ~Test()
    {
        cout<<"Destructor runs";
        delete abc;
    }

// Печать списка
void print_list()
{
    ListItem* item = this->abc;
    while(item)
    {
        cout << item->data;
        item = item->next;
        if(item) cout << " ";
    }
    cout << endl;
}

// Удаляет первые символы в строках
void assigned()
{
    ListItem* item=this->abc;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
}

//Добавляет инвертированный список
void plus_invert ()
{
    ListItem *item=this->getTail();
    while (item)
    {
        this->addToTail(item->data);
        item = item->prev;
    }
}


    ListItem* getTail()
    {
        ListItem* item = abc;
        while(item->next)
            item = item->next;
        return item;
    }

    ListItem* addToTail(const string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }

    ListItem* findLastItem(const string data)
    {
        ListItem* item = abc, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;

    }
    bool insertAfterLastItem(const string data, Test list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list.abc->prev = last;
        last->next = list.abc;
        return true;
    }
struct ListItem
{
    string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы

    // Конструктор
    ListItem(const string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }

    ~ListItem()
    {
        if(next) delete next;
    }
};
 ListItem *abc;
};




int main()
{
    Test a("aa1");
    a.addToTail("aa2");
    a.addToTail("aa3");
    a.addToTail("aa4");
    cout << "List a: ";
    a.print_list();


    Test b("bb1");
    b.addToTail("bb2");
    b.addToTail("bb3");
    b.addToTail("bb4");
    cout << "List b: ";
    b.print_list();

    a.insertAfterLastItem("aa3", b);
    cout << "Merged: ";
    a.print_list();
    a.assigned();
    cout<<"After deleting first symbol: ";
    a.print_list();
    a.plus_invert();
    cout<<"After inverting (and append): ";
    a.print_list();
    return 0;
}

И получаю очень интересную картину...
Если честно то у меня разрыв шаблона: я всегда думал что программа при попытке обратиться к памяти где данные другой программы то получит отказ, а оно во как.

Добавлено позже:
Ну как я понимаю у меня что-то не так с insertAfterLastItem (после её работы здесь такое начинается), но почему без написания моего деструктора проблем нет мне непонятно. И в итоге непонятно с insertAfterLastItem что-то не так или с деструктором что-то не так.

Добавлено позже:
Такс, нашёл одну из ошибок (я балда амперсант не поставил и там передавалась копия этой insertAfterLastItem вместо оригинала), но теперь программа не доходит до конца и после запуска деструктора зависает, притом зависает не всегда, а в процентах 70%  o_0 Пытается освободить уже освобождённую память где-то чтоль? Так почему не каждый раз тогда зависает ...
#include <iostream>
#include <cstring>
using namespace std;


class Test
{
public:
    struct ListItem;

    // Конструктор по умолчанию
    Test(string data)
    {

        abc=new ListItem(data);
    }

    ~Test()
    {
        cout<<"DESTRUCTOR RUNS\n";
        delete abc;
    }

// Печать списка
void print_list()
{
    ListItem* item = this->abc;
    while(item)
    {
        cout << item->data;
        item = item->next;
        if(item) cout << " ";
    }
    cout << endl;
}

// Удаляет первые символы в строках
void assigned()
{
    ListItem* item=this->abc;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
}

//Добавляет инвертированный список
void plus_invert ()
{
    ListItem *item=this->getTail();
    while (item)
    {
        this->addToTail(item->data);
        item = item->prev;
    }
}


    ListItem* getTail()
    {
        ListItem* item = abc;
        while(item->next)
            item = item->next;
        return item;
    }

    ListItem* addToTail(const string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }

    ListItem* findLastItem(const string data)
    {
        ListItem* item = abc, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;

    }
    bool insertAfterLastItem(const string data, Test &list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list.abc->prev = last;
        last->next = list.abc;
        return true;
    }
struct ListItem
{
    string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы

    // Конструктор
    ListItem(const string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }

    ~ListItem()
    {
        if(next) delete next;
    }
};
 ListItem *abc;
};




int main()
{
    Test a("aa1");
    a.addToTail("aa2");
    a.addToTail("aa3");
    a.addToTail("aa4");
    cout << "List a: ";
    a.print_list();


    Test b("bb1");
    b.addToTail("bb2");
    b.addToTail("bb3");
    b.addToTail("bb4");
    cout << "List b: ";
    b.print_list();

    a.insertAfterLastItem("aa3", b);
    cout << "Merged: ";
    a.print_list();
    a.assigned();
    cout<<"After deleting first symbol: ";
    a.print_list();
    a.plus_invert();
    cout<<"After inverting (and append): ";
    a.print_list();
    return 0;
}


Добавлено позже:
Да что же это такое, я же деструктор то оставил в самой структуре и ему заняться  нечем кроме как освобождения повторно памяти, во туплю сегодня.

7265
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 14:43:30 »
HoRRoR, не сердись  :) Там просто другая проблема возникает (ну помимо того что надо всюду делать операцию стрелка) с контруктором копии...
если оставить всё как есть в прошлом коде то тогда он будет указывать на тот же участок памяти (ну и при повторном удалении конечно же будет ошибка), хотя я уже  исправил и теперь программа выглядит так:
//Программа создаёт структру, запрашивает данные для её заполнения после
//чего производит поиск по структуре введённых данных

# include <iostream>
# include <iomanip>
# include <windows.h>
using namespace std;

const int size=3;

class Test
{
public:
    Test()
    {
        abc = new PRICE;
        numberOfClass++;
    }

    Test(Test &right)
    {
        abc= new PRICE;
        strcpy(abc->name,right.abc->name);
        strcpy(abc->shop,right.abc->shop);
        abc->cost=right.abc->cost;
    }

    ~Test()
    {
        cout<<"Дестуктор был запущен";
        delete abc;
    }

    void setName(char a[])
    {
        strcpy(abc->name,a);
    }

    void setShop(char a[])
    {
        strcpy(abc->shop,a);
    }

    char *getShop()
    {
        return abc->shop;
    }

    void setCost(double a)
    {
        if (a>0)
         abc->cost=a;
        else
        {
            cout<<"Введена направильная цена, цена установлена в 1\n";
            abc->cost=1;
        }
    }


    void search(char a[]) // Ищет есть ли в структуре элементы с нужным нам именем
    {
        if (!(strcmp(a,abc->name)))
        {
            cout<<"Нужный вам товар есть в магазине  "<<abc->shop
            <<"\nЕго цена составляет: "<<abc->cost<<" грн"<<"\n\n";
            resultOfSeach=1;
        };
    }

    static int searchs()
    {
        return resultOfSeach;//Возвращает результат поисков
    }

    static int numberOfClass;
private:
    struct PRICE
    {
        char name[30];// название товара
        char shop[30];//;// название магазина
        double cost;// цена товара
    };
    PRICE *abc;
    static int resultOfSeach;// Нужна чтобы знать был ли найден товар для хоть одного класса
};

int Test::resultOfSeach=0;
int Test::numberOfClass=0;


int main()
{
    setlocale(LC_ALL, "Russian");
    char search[30];
    char temp[30];
    int result=0;
    double cost;
    int n;
    cout<<"Введите колличество магазинов: ";
    cin>>n;
    Test *a=new Test [n];
    for (int i=0;i<n;i++)
    {
        cout<<"-----Магазин N"<<i+1<<"-----\n";
        cout<<"Введите название товара: ";
        cin>>temp;
        a[i].setName(temp);
        cout<<"Введите название магазина:";
        cin>>temp;
        a[i].setShop(temp);
        cout<<"Введите цену товара :";
        cin>>cost;
        a[i].setCost(cost);
    }
    cout<<"\nВведите имя интересущего вас товара: ";
    cin>>search;
    for (int i=0;i<n;i++)
     a[i].search(search);
    if (!(a[0].searchs()))
     cout<<"Указанный товар в магазинах не найден\n";
    Test b=a[0];
    delete a;
    cout<<"\nКонструктор копии работает и мы можем увидеть название магазина N1\nдаже после удаления оригинала a: "<<b.getShop()<<'\n';
    cout<<"Всего было магазинов: "<<Test::numberOfClass<<'\n';
    system("pause");
    return EXIT_SUCCESS;
}
ТЕ: в конструкторе копии я через strcpy построчно копирую все данные из одной структуры в другую, жаль что нельзя посредством присваивания как-то указать что нужно скопировать все данные из тех участков памяти, а не указывать на тот же участок.

7266
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 13:50:14 »
HoRRoR,перечитал и всё равно не могу уловить твою идею. Ну пытаюсь сделать конструктор как у тебя и тогда получаю
\7\4.cpp||In constructor `Test::Test()':|
\7\4.cpp|16|error: no match for 'operator=' in '((Test*)this)->Test::abc = (Test::PRICE*)operator new(72u)'|
\7\4.cpp|77|note: candidates are: Test::PRICE& Test::PRICE::operator=(const Test::PRICE&)|
Какая-то страшная ошибка.

7267
serega segas, и в каком году играл?

7268
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 12:57:12 »
HoRRoR,а я с самого начала так попробовал, пишет
\7\4.cpp||In destructor `Test::~Test()':|
\7\4.cpp|27|error: type `struct Test::PRICE' argument given to `delete', expected pointer|
У меня же сейчас опять же таки важно не то чтобы это было красиво /логично/удобно, а то чтобы в программе был деструктор  :)
Это как и с той же структурой запихнутой в класс - непонятно зачем, но надо. Вот и здесь так, я там дальше тоже извращался с конструктором по умолчанию чтобы он хоть что-то делал лишь бы он был.
На всякий случай код программы полностью:
//Программа создаёт структру, запрашивает данные для её заполнения после
//чего производит поиск по структуре введённых данных

# include <iostream>
# include <iomanip>
# include <windows.h>
using namespace std;

const int size=3;

class Test
{
public:
    Test()
    {
        numberOfClass++;
    }

    Test(Test &right)
    {
        abc=right.abc;
    }

    ~Test()
    {
        cout<<"Дестуктор был запущен";
        delete abc;
    }

    void setName(char a[])
    {
        strcpy(abc.name,a);
    }

    void setShop(char a[])
    {
        strcpy(abc.shop,a);
    }

    char *getShop()
    {
        return abc.shop;
    }

    void setCost(double a)
    {
        if (a>0)
         abc.cost=a;
        else
        {
            cout<<"Введена направильная цена, цена установлена в 1\n";
            abc.cost=1;
        }
    }


    void search(char a[]) // Ищет есть ли в структуре элементы с нужным нам именем
    {
        if (!(strcmp(a,abc.name)))
        {
            cout<<"Нужный вам товар есть в магазине  "<<abc.shop
            <<"\nЕго цена составляет: "<<abc.cost<<" грн"<<"\n\n";
            resultOfSeach=1;
        };
    }

    static int searchs()
    {
        return resultOfSeach;//Возвращает результат поисков
    }

    static int numberOfClass;
private:
    struct PRICE
    {
        char name[30];// название товара
        char shop[30];//;// название магазина
        double cost;// цена товара
    };
    PRICE abc;
    static int resultOfSeach;// Нужна чтобы знать был ли найден товар для хоть одного класса
};

int Test::resultOfSeach=0;
int Test::numberOfClass=0;


int main()
{
    setlocale(LC_ALL, "Russian");
    char search[30];
    char temp[30];
    int result=0;
    double cost;
    int n;
    cout<<"Введите колличество магазинов: ";
    cin>>n;
    Test *a=new Test [n];
    for (int i=0;i<n;i++)
    {
        cout<<"-----Магазин N"<<i+1<<"-----\n";
        cout<<"Введите название товара: ";
        cin>>temp;
        a[i].setName(temp);
        cout<<"Введите название магазина:";
        cin>>temp;
        a[i].setShop(temp);
        cout<<"Введите цену товара :";
        cin>>cost;
        a[i].setCost(cost);
    }
    cout<<"\nВведите имя интересущего вас товара: ";
    cin>>search;
    for (int i=0;i<n;i++)
     a[i].search(search);
    if (!(a[0].searchs()))
     cout<<"Указанный товар в магазинах не найден\n";
    Test b=a[0];
    delete a;
    cout<<"\nКонструктор копии работает и мы можем увидеть название магазина N1\nдаже после удаления оригинала a: "<<b.getShop()<<'\n';
    cout<<"Всего было магазинов: "<<Test::numberOfClass<<'\n';
    system("pause");
    return EXIT_SUCCESS;
}
Вообще можешь и не читать полнсотью, надо только чтобы деструктор удалил саму структуру.

7269
MetalliC,так я скачал и в новую папку поставил отдельно от старых версий и вот такая вот фигня. Ок, попробую ещё раз поставить. Версия у меня была тогда x64-0.140r4790-20101022 вот её же сейчас повторно и попробую поставить.

Добавлено позже:
Теперь всё работает ок, странно почему тогда в прошлый раз не хотело работать, может что кнопку таб перехвачивало.

7270
Hard'n'Soft / Re: Операционная Система
« : 20 Март 2011, 12:40:43 »
Стас77,со званиями у людей на форуме всё впорядке, можешь не  сомневаться,  просто чтобы установить OS объяснять 3 страницы форума и это ничего же необычного во время установки не случилось это многовато и то ты ещё не решил все свои проблемы, а вот ещё придёт черед драйверов и активации OS. А так бы за вчерашний день ты перебрал бы свой 1 ДВС что было бы тебе привычно и часть денег за работу отдал бы мастеру за установку windows, драйверов и самого необходимого по и нервы были бы твои целее и не было бы двух windows и ты вчера бы уже спокойно сидел в инете.

7271
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 12:32:29 »
HoRRoR,ну у меня тут по умолчанию вместе с классом всегда создаётся и структура abc (PRICE abc) под которую и выделяется там место - два массива по 30 элементов и один элемет double, допустим что их инициализацию мы тоже провели и её то (структуру) теперь и надо удалить так как больше из данных класс ничего не имеет, ну static элементы есть, но они общие. Как мне поступить посоветуй. Я понял что я пробую глупо её удалить, но как тогда иначе поступить?

7272
Hard'n'Soft / Re: Програмирование на C++
« : 20 Март 2011, 02:04:30 »
Цитата: HoRRoR
Т.е. при наличии хоть одного конструктора не будет создаваться пустой конструктор по умолчанию.
Ага, теперь понятно.
Цитата: HoRRoR
А что мешало тебе проверить? Написать внутри класса friend class MyClass? Конечно можно.
Да ничего не мешало, не знал я как это сделать, пробовал писать просто friend MyClass, а компилятор сказал что так нельзя ну я и решил спросить. Теперь понятно, спасибо за ответ  :)
Цитата: HoRRoR
оясни, я о такой проверке не слышал, не приходилось использовать.
Ну у неё всюду
p=new char[1];
if(!p) {cout << "Ошибка выделения памяти \n"; exit(1);}
Помоему задолбаться можно это приписывать при каждом выделении памяти.

Добавлено позже:
Вопрос на засыпку: а как удалить структуру (ну что мне писать в деструкторе в классе) ?
Есть вот такая структура в классе  и вот мой деструктор, который тоже в классе:
    struct PRICE
    {
        char name[30];// название товара
        char shop[30];//;// название магазина
        double cost;// цена товара
    };
    PRICE abc;

    ~Test()
    {
        cout<<"Дестуктор был запущен";
        delete abc.cost;
        delete abc.name;
        delete abc.shop;
    }
Я так понимаю это я плохо придумал, но просто удалить структуру не получается (ну оно и не удивительно  :) ), а если пробовать удалять по кускам то double элемент структуры удаляться не хочет с ошибкой:
||In destructor `Test::~Test()':|
|27|error: type `double' argument given to `delete', expected pointer|
Так всё же как в таких случаях поступать?

7273
Дайджест / Re: Crysis 2 (BETA) уже в сети
« : 20 Март 2011, 00:01:29 »
Цитата: DJ Sined
Не, ты что от такой суперграфы наоборот зрение восстанавливается 
Это ParagonUnits забыл максимум зрения активировать  :)

7274
Цитата: pedro
Сегодня луна находится на самом близком расстоянии от земли.
За какой период? За последний месяц чтоль?
P.S Откуда вы все столько предупреждений наловили,  прям столько квадратов у многих в последние дни напоявлялось.

7275
Hard'n'Soft / Re: Програмирование на C++
« : 19 Март 2011, 23:51:08 »
А когда я делаю конструктор для инициализации элемента класса элементом другого класса (композиция) то получается я обязан делать и конструктор по умолчанию (хотя бы пустой ничего не делающий с {}) иначе в main я не смогу создать новый объект моего класса не передавая ничего, ну не смогу написать:
myclass a;
почему так? Ведь не делай я конструктор на случай если я потом захочу присвоить объекту myclass a значение другого класса то я спокойно могу сделать в main
myclass a;
и никаких пустых конструкторов по умолчанию при этом делать не надо, почему так? Опять стандарт?
Собственно пример если я непонятно выразился (пример из конспекта преподши, просто решил переделать от скуки чтобы можно было инициализировать объект одного класса значениями другого, сам пример изначально наоборот демонстрировал что этого делать нельзя  :) ) :
#include<iostream>
using namespace std;
class myclass
{
public:
int a,b;
void set(int i, int j){a = i;b=j;}
void show() { cout<< a <<' ' << b << "\n"; }
};
class yourclass
{
int a,b;
public:
void set(int i, int j){a = i;b=j;}
yourclass(){};                                         //Без этого не получиться создать в main yourclass o2 не передавая параметров в скобках
yourclass(myclass &abc) {a=abc.a;b=abc.b;}
void show() { cout<< a <<' '<< b << "\n"; }
};
int main()
{
myclass o1; yourclass o2;
o1.set(10,4);
o2=o1;
o1.show();
o2.show();
return 0;
}
Все мелочи неточности и что нежелательно делать в этом примере, а было сделано давайте опустим  :)

Добавлено позже:
Ну и заодно вопрос: можно ли объявить другом (friend) класса другой класс подскажите пожалуйста? Ну на случай что мне надо будет чтобы функции одного класса могли обращаться к приватным данным другого класса, я так догадываюсь это вполне реально ведь :) Я ведь пока знаю только как объявить функцию-друга класса только если эта функция будет за границей классов вообще.

Добавлено позже:
Вопрос N3: у преподши повсюду идёт проверка что память через malloc/new была выделена, это пережитки прошлого (когда оп было мало) чтоль или это хороший тон, хотя на последнее не очень то похоже. Это если бы я выделял память в большом объёме тогда ладно, но когда массив из 10 int объектов что не займёт много памяти то по-моему эта проверка лишняя ... или нет?

7276
Общий / Re: Культовая игра
« : 19 Март 2011, 23:26:29 »
Doom и Duke Nukem наверное ну и Mario тоже.

7277
Hard'n'Soft / Re: Операционная Система
« : 19 Март 2011, 21:09:23 »
Ну я предложил ему нанять мастера да и всё так как уж слишком много проблем у него возникло, но он не хочет же.

7278
В шкаф там надо с какой-то определённой стороны стрелять - только тогда откроется. Кстати кто-то игру без читов полностью проходил? Я на последних уровнях всегда проигрывал без читов, там же врагов с пулемётами полно и фиг завалишь + мини повсюду так что я там чит на жизни включал чтобы пройти игру полностью  :)
Что-то воспоминания нахлынули, опять засесть чтоль и попробовать пройти хоть на эмуляторе без чит кодов, так как в поседний раз я в неё играл ещё на железной сеге и лет 8 назад.

7279
Nemesis_c,а ты посмотри сидит ли он на этом фейсбуке, может там только учётка созданная 5 лет тому назад и всё.

7280
Rumata,да-да, я тоже этот катридж видел, ленивые пираты заменили только титульную картинку у lethal enforces.

7281
Hard'n'Soft / Re: Операционная Система
« : 19 Март 2011, 20:12:12 »
Стас77,это конечно похвально, но что-то сложновато даёться тебе установка.
Цитата: Стас77
Не получается Форматировать
Почему не получается? В твоём случае надо подробно описывать что и почему не получается, а не констатировать факты.

Добавлено позже:
Цитата: Стас77
И почему то ключ не спрашивает!
XP начинает просить ключ ближе к окончанию 30 дней, по началу требовать не будет, хотя возможность ввести ключ в свойствах пк будет.

7282
Tails1997,кого их?

7283
Hard'n'Soft / Re: Операционная Система
« : 19 Март 2011, 19:45:16 »
Стас77,помоему тебе стоило заплатить кому-то чтобы он тебе поставил винду, сэкономил бы время и нервы.

7284
Я тут уже спрашивал в одной из тем, но так и не получил ответ: как в новых версиях mame что с интерфейсом настраивать управление? Раньше же всегда по tab было, а тут что-то нажимал-нажимал и так и не нашёл как вызвать привычную менюшку эмулятора по настройке управления.

7285
Nemesis_c,а как же Щорс ?  :)

7286
aptyp,ну так вон мультики pixar тоже похожую картинку выдают, уже писали что для просчитывания одного кадра уходит где-то пол часа (а кадров то 24 в секунду). Рендер и графика в совремённых играх это же разные вещи.

7287
Я онлайн финалки вышедшие на PC и за финалки не считаю.

7288
ParagonUnits,у тебя не равноценное сравнение - там же не ралли.
К твоему скрину больше сравнимо v-rally 2, скрин только с грязью летящей из под колёс не нашёл, но она там тоже есть

7289
Долго ждать им придётся.

7290
Я вот тоже был удивлён что никто не русифицировал игру, обычно же хитовые игры независимо от количества текста в них переводят на русский (соники как пример на smd).

Страницы: Назад 1 ... 239 240 241 242 [243] 244 245 246 247 ... 431 Далее