Avatar billede nexus-6 Nybegynder
09. august 2002 - 17:28 Der er 6 kommentarer og
1 løsning

Kan ikke få en klasse til at virke. Hvad er der galt ??

Hej NG.
Har lige et spørgsmål.
Skal lige siges at jeg bruger MS Visual Studio 6.
1)
Hvad er der galt med denne kode:

#include "iostream.h"
#include "stdafx.h"

class anden
    {
        public:
            void CalcD(float a, float b, float c);
    };
float anden::CalcD(float a, float b, float c)
    {
        return (b*b) - (4*a*c);
    }
int main(int argc, char* argv[])
{
    anden deter;
    deter.CalcD(2,4,5);
    cout << "Determinanten er: " << deter.CalcD;   
    return 0;
}

Jeg får denne fejl:

C:\christian\anden2\anden2.cpp(16) : error C2556: 'float __thiscall anden::CalcD(float,float,float)' : overloaded function differs only by return type from 'void __thiscall anden::CalcD(float,float,float)'
        C:\christian\anden2\anden2.cpp(11) : see declaration of 'CalcD'
C:\christian\anden2\anden2.cpp(16) : error C2371: 'CalcD' : redefinition; different basic types
        C:\christian\anden2\anden2.cpp(11) : see declaration of 'CalcD'
C:\christian\anden2\anden2.cpp(26) : error C2264: 'CalcD' : error in function definition or declaration; function not called
C:\christian\anden2\anden2.cpp(27) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
Error executing cl.exe.
Avatar billede nak-m Nybegynder
09. august 2002 - 17:39 #1
denne virker for mig! (men virker den rigtigt?) check den:

#include <iostream>
using namespace std;

class anden
{
public:
  float CalcD(float a, float b, float c);
};

float anden::CalcD(float a, float b, float c)
{
  return (b*b) - (4*a*c);
}

int main(int argc, char* argv[])
{
    anden deter;
    cout << "Determinanten er: " << deter.CalcD(2,4,5);
    return 0;
}
Avatar billede nexus-6 Nybegynder
09. august 2002 - 18:34 #2
Fandt ud af at koden hele tiden har virket og at det var noget header filerne at gøre. Ved ikke lige præcis hvad der var galt, men hvis jeg lavede det i et tomt projekt virkede det. Før lavede jeg det i et "hallo world" projekt.
Du ved ikke hvad der kunne have været galt.
/James
Avatar billede nak-m Nybegynder
09. august 2002 - 18:40 #3
altså jeg ved ikke så meget om Visual Studio så deeet!
Avatar billede nak-m Nybegynder
09. august 2002 - 18:41 #4
forresten giver min kode det samme output?
Avatar billede nexus-6 Nybegynder
09. august 2002 - 18:48 #5
Yep
Avatar billede nak-m Nybegynder
10. august 2002 - 14:31 #6
men din kode du havde skrevet ovenover burde altså ikke dú! (ihvertfald ikke ifølge ANSI/ISO C++!) Men jeg ved selvfølgelig heller ikke hvordan det foregår i Visual Studio :)
Avatar billede soepro Nybegynder
13. august 2002 - 12:52 #7
Fejlen var deklarationen af din CalcD() funktion - i klassedefinitionen havde den return-type void - i selve body'en returntype float !

Compileren tror du forsøger at overloade funktionen, men man kan/må ikke overloade returntypen - kun hvis funktionens parametre også er forskellige OG ikke kan propageres til hinanden

char CalcD(char s)
int  CalcD(int n)

er heller ikke tiladt fordi en char kan propageres til en int, og så kan coplieren ikke beslutte hvad for en af overloadingerne du vil have.
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