Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Мусор в поле класса


Автор: maxi91m 16.5.2010, 19:07
Не понимаю почему  smile 
Я создаю экземпляр класса TTextM txt; который унаследоват от TText(создаю все в хидере Form1.h в самом верху
После того как конструктор отработает в самом верхнем(даже если я добавляю еще одно поле) содержится не понятный мусор, который появляется когда отработает конструктор TText

TTextM выглядит так
Код

#ifndef TTEXTM_H_
#define TTEXTM_H_
#include "TText.h"
#include "UIFanction.h"
//class TText;

class TTextM : public TText
{
public:
    virtual void DelLine();
    virtual void DelSect();
    virtual void Del();
     TTextM();
    int SaveTextF( char* name_f);
    void ReadTextF( char *name_f);
    void PrintTextForm( System::Windows::Forms::ListBox^ listBox1);

};
#endif


Он унаследован от 
Код

#ifndef TTEXT_H_
#define TTEXT_H_
#include "TTextLink.h"
#include <stack>
#include <string.h>

using namespace System;
using namespace std;
   
class TTextLink;                                               

class TText
{
public:
    TTextLink* pFirst1;
    TTextLink* pFirst;
    TTextLink* pCurrent;
    stack<TTextLink*> _stack,_stackI;  
    TText(){
        pFirst = NULL; 
        pFirst1 = NULL;
        pCurrent = NULL;
    }
    void GoNextLine( );
    void GoNextSect( );
    void GoPrevLine( );
    void GoPrevSect( );
    void SetLine(string line){pCurrent->str = line;}
    string GetLine(){return string(pCurrent->str);}
    void Reset ( );
    int  IsEnd ( ){return _stackI.empty();}
    void GoNext( );
    void InsNextLine( string line );
    void InsDownLine( string line );
    void InsNextSect( string line );
    void InsDownSect( string line );
    virtual void DelLine( );
    virtual void DelSect( );

};


#endif 

Данные переменные не хотят изменятся
TTextLink* pFirst1;
TTextLink* pFirst;
через методы класса TTextM(возможно я что то не понимаю с наследованием) 
Как я понимаю класс TTextM наследует все от TText и методы класса TTextM выполняются для полей TText(т.к переменная pCurrent  меняется как положенно)
Что за ошибки такие? 
Что не в порядке?

Так наверное не очень понятно, я прикрепил проект, так наверное будет понятнее.

и еще
если я пишу в Form.h
TTextM txt;
txt.pFirst1 = NULL; и переменная не меняется
а почему не пойму

Автор: maxi91m 16.5.2010, 22:17
Ну может кто знает почему при создание экземпляра класса в поле записывается какое то значение хотя в конструкторе нету такого?
 smile 

Автор: Exception 16.5.2010, 23:00
maxi91m, при всём уважении, если тебе не отвечают, не надо поднимать тему — тем более, с подобной формулировкой второго сообщения.
Сегодня воскресенье, у людей выходные, а все специалисты по Managed C++ временно уехали на Гавайи.

Цитата(maxi91m @  16.5.2010,  20:07 Найти цитируемый пост)
После того как конструктор отработает в самом верхнем(даже если я добавляю еще одно поле) содержится не понятный мусор, который появляется когда отработает конструктор TText


Я понял твой вопрос только с седьмого прочтения. Названия в духе TText и TTextM не добавляют ясности касательно того, что именно ты хочешь сделать. А самое интересное — как мы можем понять, что делает конструктор, если ты привёл только заголовки (нет, я не скачиваю файлы проектов, да и MC++ у меня не установлен)?

Добавлено через 1 минуту и 57 секунд
Первая догадка: может быть, в C++ всегда в полях мусор, пока мы их чем-нибудь да не заполним?

Автор: maxi91m 16.5.2010, 23:24
Проблема в том что я и не могу заполнить, пишу явным образом
TTextM txt;
txt.pFirst1 = NULL; и переменная не меняется
а почему не пойму

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