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


Автор: codxxx 16.12.2007, 03:55
Подскажите как правильно передать указатель на определенный класс в метод, чтобы в дальнейшим я с ним мог работать. У меня текст разбит на модули

Заголовок MyDate.h:

Код

 // Тут я объявляю указатель на класс
 TFileList *FilesList;


Модуль MyDate.cpp:
Код


 /*Вот сам метод в который я передаю указатель на класс TFileList */
TFileClass::ReadToFile(TFileList *FL)
{

 FL->Clear();   [color=red]// Тут вылетает ошибка, т.к. неправильный приходит указатель[/color]
 if (!infile)
  {
   ShowMessage("Неудалось открыть файл");
   CloseFile(false);
  }
 else
 {
    fseek(infile,0,0);
    char indif[16];
    int kol;
    fread(&indif,sizeof(indif),1,infile);
    if (strcmp(indif,"<DBM-STRUCTURE>")==0)
    {
       fread(&kol,sizeof(kol),1,infile);
       int inc1=1;
        do
        {
             struct SODBStr st;
             fread(&st,sizeof(st),1,infile);
             FL->CopyAdd(st);
             inc1++;
        } while (kol>=inc1);
     }
 }
 CloseFile(false);
}

//Вот метод из которого я передаю FilesList

 TFileClass::CloseFile(bool Sav)
{
   if (Sav)
   {

    SaveToFile(FilesList); //по идее должен передаться указатель в SaveToFile, но срабатывает не правильно
   }
  fclose(infile);
  infile=0;

};



Модуль Main.cpp:

Код

void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
   // Тут я его создаю
   FilesList = new TFileList();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormDestroy(TObject *Sender)
{
  // Следовательно очищаю
   delete FilesList;
   FilesList = NULL;
}



Подскажите в чем может быть проблема smile 

Автор: MAKCim 16.12.2007, 10:31
в MyDate.cpp должна быть доступна структура класса TFileList
а не просто тип указателя на него

Автор: codxxx 16.12.2007, 13:37
она в нем доступна

Код

#ifndef MyDataH
#define MyDataH
//---------------------------------------------------------------------------
#include <stdio.h>
#include <_str.h>
#include <vcl.h>
#include "MyStrClass.h"

class TFileList: public TList
{
  public:
   AllClear();
   CopyAdd(SODBStr St);
};

class TFileClass
{
  public:
    TFileClass()
    {
     fname = new char[256];
     mode = new char;
     strcpy(mode,"r+");
     strcpy(fname,"");
    }
    ~TFileClass()
    {
     if (infile) delete infile;
     delete [] fname;
     delete mode;
    }
   OpenFile(char *Name, char *Mode);
   CloseFile(bool Sav);
   //ReadFile();
   ReadToFile(TFileList *FL);
   SaveToFile(TFileList *FL);
  protected:
   char  *fname;
   char  *mode;
   FILE *infile;

};

TFileList *FilesList;

#endif

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