Avatar billede repsak Nybegynder
30. marts 2003 - 22:35 Der er 6 kommentarer og
1 løsning

CRecordset (MFC)

Hey, er der nogle som kan lure hvorfor at jeg ikke kan compile følgende:
DBStates * db = new DBStates();
...
CRecordset recordset(db);   

db arver fra CDatabase
Avatar billede tam Nybegynder
31. marts 2003 - 00:41 #1
Hvilken compiler bruger du, og hvad er fejlen. Jeg kan kommer med en del gæt, men når jeg ikke ved hvad fejl compileren kommer med, bliver det kun gætteri.
Avatar billede repsak Nybegynder
31. marts 2003 - 07:26 #2
Jeg bruger Microsoft visual studio c++

C:\WINDOWS\Skrivebord\empty\interface.cpp(38) : error C2664: 'CRecordset::CRecordset' : cannot convert parameter 1 from 'class DBStates *' to 'class CDatabase *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
Avatar billede tam Nybegynder
31. marts 2003 - 09:28 #3
Er du sikker på at DBStates nedarver fra CDatabase som public?
Avatar billede repsak Nybegynder
31. marts 2003 - 15:59 #4
tam->
Hold kæft mand! Hvor dum/uopmærksom kan man være ;-) Post et svar for et godt æh gæt... Tak for det (kommer lige fra Java hvor det ikke er nødvendigt)
Avatar billede segmose Nybegynder
31. marts 2003 - 16:17 #5
Arv og skyld?

CRecordset har ikke en contructor der tager DBStates, men en der tager CDatabase, du skal så cast fra den ene class til den anden.

Test:
#include <stdio.h>
#include <stdlib.h>

class CDatabase {
public:
  CDatabase() { printf("CDatabase\n"); }
};

class DBStates : public CDatabase {
public:
DBStates() { printf("DBStates\n"); }
};

class CRecordset {
public:
  CRecordset(CDatabase *aa) { printf("CRecordset\n"); }
};

int main() {
  DBStates *bb = new DBStates;
  CRecordset cc((CDatabase *)bb);

  return EXIT_SUCCESS;
}



ellers vis lige din erklæring af DBStates (ihvertfald hoved og constructor, samt operator).
Avatar billede repsak Nybegynder
31. marts 2003 - 16:27 #6
segmose ->
jeg er klar over den problematik som du opstiller. Men Tam havde ret... Havde ikke lavet public arv... :-)
Avatar billede tam Nybegynder
31. marts 2003 - 17:26 #7
her er et svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester