Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > C++ работа с классами


Автор: JTV 17.5.2012, 23:44
проблема возникла. вот простой код, вроде все понятно. но проблема в том что выводит какую-то ерунду(линии квадратики, и буквы лю), а не введенную строку. если вывожу сразу после ввода, вроде нормально все, а в конце...уже и очищала строку и т. д. и т. п.  подскажите , что нужно сделать, чтобы исправить эту ошибку?
Код

#include <iostream> 
#include <conio.h>
#define N 2
using  namespace std;
 class market

     char *firma;
    public: 
     void show(char *f)
     { 
        cout<<firma<<" ";
     } 
    void set(char *f)
    {
        firma=f;
    }
};

 
 int main() 
 {  int i;
    char *a=new char[100];
    market myprogram[N];
    for(i=0;i<N;i++)
    {
        cout<<"firma=";
        cin>>a;
        myprogram[i].set(a);
        delete [] a;
        a=new char[100];
    }
    for(i=0;i<N;i++)
    { 
        myprogram[i].show(a);
    }
    delete [] a;
    getch();
    return 0; 
 } 


Автор: disputant 18.5.2012, 05:06
Так вы же сохраняете указатель на область памяти, которую тут же освобождаете...
По-хорошему в market::set строку надо копировать.

Впрочем, это не имеет значения, так как потом вы им не пользуетесь... Вы же в цикле выводите одну и ту же только что выделенную и никак не инициализированную область памяти a... вы точно в market::show так и намеревались выводить - передаваемую строку, а не firms?...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)