www.digitalmars.com         C & C++   DMDScript  

c++ - As usual, I'm lost

reply Michael Comperchio <mcmprch adelphia.net> writes:
I have declared in a .h file
// shortened
struct DataRecord
{
	int RecordNumber;
	char Task[256];
	char DueDate[10];
	char Priority[2];
	int Completed;
	char Notes[2048];
	int Deleted;
} Data;
//some other stuff...then
struct DataRecord * FindARecord(int iRecordNumber);

in the .cpp i declare this:

struct DataRecord *CFORMAPPDoc::FindARecord(int iRecordNumber){
   struct DataRecord * MyData = new struct DataRecord;
//some code to find the record
   if( rc == true )
     return MyData;
   else
     return NULL;
}

the silly compiler however gives me this:
sc formadoc.cpp -cpp -Ae -mn -C -WA -S -3 -a8 -c -H -HO- -gf -D_DEBUG=1 
-D_X86_=1 -D_MT=1 -Ic:\dm\stl -oformadoc.obj
Error: C:\dm\FORMAPP\formadoc.cpp(241): 'CFORMAPPDoc::FindARecord' 
previously declared as something else
C:\dm\FORMAPP\formadoc.cpp(241): It was declared as: 
CFORMAPPDoc::DataRecord*member func(int )
C:\dm\FORMAPP\formadoc.cpp(241): It is now declared: DataRecord*member 
func(int )
Error: C:\dm\FORMAPP\formadoc.cpp(280): need explict cast to convert
C:\dm\FORMAPP\formadoc.cpp(280): from: CFORMAPPDoc::DataRecord*
C:\dm\FORMAPP\formadoc.cpp(280): to  : DataRecord*
Lines Processed: 378  Errors: 2  Warnings: 0
Build failed


HELP!!!!!

Michael
Jun 27 2002
parent reply Jan Knepper <jan smartsoft.cc> writes:
Michael Comperchio wrote:

 I have declared in a .h file
 // shortened
 struct DataRecord
 {
         int RecordNumber;
         char Task[256];
         char DueDate[10];
         char Priority[2];
         int Completed;
         char Notes[2048];
         int Deleted;
 } Data;
 //some other stuff...then
 struct DataRecord * FindARecord(int iRecordNumber);
I bet that is inside a class CFORMAPPDoc? you do not have the repeat the 'struct' in C++ just DataRecord * FindARecord(int iRecordNumber); will do.
 in the .cpp i declare this:

 struct DataRecord *CFORMAPPDoc::FindARecord(int iRecordNumber){
I suspect that you declared 'DataRecord' within the scope of class CFORMAPPDoc Thus change this to: CFORMAPPDoc :: DataRecord *CFORMAPPDoc::FindARecord(int iRecordNumber){ That might help. Jan
    struct DataRecord * MyData = new struct DataRecord;
 //some code to find the record
    if( rc == true )
      return MyData;
    else
      return NULL;
 }

 the silly compiler however gives me this:
Silly compiler?!
 sc formadoc.cpp -cpp -Ae -mn -C -WA -S -3 -a8 -c -H -HO- -gf -D_DEBUG=1
 -D_X86_=1 -D_MT=1 -Ic:\dm\stl -oformadoc.obj
 Error: C:\dm\FORMAPP\formadoc.cpp(241): 'CFORMAPPDoc::FindARecord'
 previously declared as something else
 C:\dm\FORMAPP\formadoc.cpp(241): It was declared as:
 CFORMAPPDoc::DataRecord*member func(int )
 C:\dm\FORMAPP\formadoc.cpp(241): It is now declared: DataRecord*member
 func(int )
 Error: C:\dm\FORMAPP\formadoc.cpp(280): need explict cast to convert
 C:\dm\FORMAPP\formadoc.cpp(280): from: CFORMAPPDoc::DataRecord*
 C:\dm\FORMAPP\formadoc.cpp(280): to  : DataRecord*
 Lines Processed: 378  Errors: 2  Warnings: 0
 Build failed

 HELP!!!!!

 Michael
Jun 27 2002
parent Michael Comperchio <mcmprch adelphia.net> writes:
Jan Knepper wrote:
 Michael Comperchio wrote:
 
 
I have declared in a .h file
// shortened
struct DataRecord
{
        int RecordNumber;
        char Task[256];
        char DueDate[10];
        char Priority[2];
        int Completed;
        char Notes[2048];
        int Deleted;
} Data;
//some other stuff...then
struct DataRecord * FindARecord(int iRecordNumber);
I bet that is inside a class CFORMAPPDoc? you do not have the repeat the 'struct' in C++ just DataRecord * FindARecord(int iRecordNumber); will do.
in the .cpp i declare this:

struct DataRecord *CFORMAPPDoc::FindARecord(int iRecordNumber){
I suspect that you declared 'DataRecord' within the scope of class CFORMAPPDoc Thus change this to: CFORMAPPDoc :: DataRecord *CFORMAPPDoc::FindARecord(int iRecordNumber){ That might help. Jan
   struct DataRecord * MyData = new struct DataRecord;
//some code to find the record
   if( rc == true )
     return MyData;
   else
     return NULL;
}

the silly compiler however gives me this:
Silly compiler?!
sc formadoc.cpp -cpp -Ae -mn -C -WA -S -3 -a8 -c -H -HO- -gf -D_DEBUG=1
-D_X86_=1 -D_MT=1 -Ic:\dm\stl -oformadoc.obj
Error: C:\dm\FORMAPP\formadoc.cpp(241): 'CFORMAPPDoc::FindARecord'
previously declared as something else
C:\dm\FORMAPP\formadoc.cpp(241): It was declared as:
CFORMAPPDoc::DataRecord*member func(int )
C:\dm\FORMAPP\formadoc.cpp(241): It is now declared: DataRecord*member
func(int )
Error: C:\dm\FORMAPP\formadoc.cpp(280): need explict cast to convert
C:\dm\FORMAPP\formadoc.cpp(280): from: CFORMAPPDoc::DataRecord*
C:\dm\FORMAPP\formadoc.cpp(280): to  : DataRecord*
Lines Processed: 378  Errors: 2  Warnings: 0
Build failed

HELP!!!!!

Michael
--
Thanks Jan, That's the ticket. Too many subtle differences in declaration syntax for my two brain cells to get...repetition is the key to learning eh? Michael
Jun 27 2002