Avatar billede jacob_top Nybegynder
15. januar 2005 - 16:42 Der er 10 kommentarer og
1 løsning

Default constructor...hjælp!

Hej Alle!

Jeg har designet en klasse der repræsenterer et polynomium. I den forbindelse har jeg i polynomiumsklassen, kun en member, som er en vector med ledende i polynomiet.

Mit problem er at jeg ikke kan få default constructoren til at virke.

Min polynomiumsklasse ser således ud:

public:

    Polynomium();
        vector<Led> led;
        Led Polynomium::opretLed(string& enStreng)

+ andre metoder til at ligge led ind i vektoren,samt manipulere disse.

under implementeringen er der blot:

Polynomium::Polynomium()
{
   
}

I min main gør jeg følgende:

Polynomium poly(); //initialiserer denne ikke default constructoren og vektoren i klassen?

problemet opstår når jeg herefter i min main prøver at kalde en af metoderne i klasse:

string enStreng = "3x^2+3x";
poly.opretLed(enStreng);

Her får jeg en kompileringsfejl, hvorfor??

Hvis jeg derimod laver en constructor, der tager en int med:

public:

    Polynomium(int x);
        int y;

Polynomium::Polynomium(int x)
{
    y = x;
}

Og herefter opretter mit polynomium i main og kalder metoden, giver det ingen kompileringsfejl og kan sagtens køre!:

Polynomium poly(3);

string enStreng = "3x^2+3x";
poly.opretLed(enStreng);

Hvorfor dette og hvordan laver jeg en default constructor, som ikke tager nogen parametre med, men som stadig opretter et polynomie og som jeg herefter kan kalde metoder i?
Mit gæt er at det har noget at gøre med allokering af memory, men ved det så absolut ikke.

Mvh
Jacob
Avatar billede arne_v Ekspert
15. januar 2005 - 16:47 #1
Hvilken kompilerings fejl?
Avatar billede thomas_nj Nybegynder
15. januar 2005 - 19:02 #2
Noget ligende detteher du søger?

#include <iostream>
#include <cstdlib>

using namespace std;

class test
{
public:
      test(int tal=0) // cons
      {
              nr=tal;
      }

        int nr;
};


int main()
{
    test hej(2); //cons kaldes
    test hej2; // cons klades men nu sættes nr til 0
   
    cout<<hej.nr<<hej2.nr<<endl;
    system("pause");
   
    return 0;
}
Avatar billede jacob_top Nybegynder
16. januar 2005 - 03:17 #3
Nej, det er ikke det jeg søger. Problemet er at jeg kan ikke oprette en Polynomie med en default constructor uden parametre og som ikke gør noget over hovedet. Dvs default constructoren ikke indeholder nogen kode:

Polynomium::Polynomium()
{
   
}

Hvis jeg gør det og prøver at kalde en metode i min main:

Polynomium poly();
poly.getGrad();

kan jeg ikke kompilere og får følgende fejl:

CPP.cpp(14): error C2228: left of '.getGrad' must have class/struct/union type

Hvis jeg derimod gør følgende:

Polynomium::Polynomium(int etTal)
{
    tal = etTal;
}

Kan jeg godt kompilere og køre dette i main:

Polynomium poly(3);
poly.getGrad();

Konstruktoren gør ikke andet end at sætte en ligegyldig variabel, som ikke bruges, men bare er der for at kunne oprette et polynoium.

Håber i kan hjælpe mig. Opgaven skal afleveres mandag og jeg er godt nok ikke ret stærk i c++. Hvis der for øvrigt er en c++ super haj som gider lige at skimme mine 200 liniers kode igennem, for evt åbenlyse fejl samt dumheder, som eks. memory management vil jeg bliver utroligt glad!

Forøvrigt arne, kom med et svar i den tråd der omhandler opgaven og du får point.

Mvh
Jacob
Avatar billede thomas_nj Nybegynder
16. januar 2005 - 11:41 #4
Hvad med

Polynomium::Polynomium(void)
{
 
}
Avatar billede thomas_nj Nybegynder
16. januar 2005 - 11:54 #5
Glem det, kan godt se dit problem nu
Avatar billede jacob_top Nybegynder
16. januar 2005 - 13:59 #6
hehe, ok.... har du en løsning på det ;-)?
Avatar billede thomas_nj Nybegynder
16. januar 2005 - 14:56 #7
Nej desværre kan ikke lige finde en
Avatar billede arne_v Ekspert
16. januar 2005 - 17:43 #8
Hvad sker der hvis du erklærer din poly variabel som:

Polynomium poly;

?
Avatar billede arne_v Ekspert
16. januar 2005 - 17:45 #9
Polynomium poly();

får den vist til at tro at det er en funktion ...
Avatar billede jacob_top Nybegynder
16. januar 2005 - 19:25 #10
YES DER VAR Den sq..... arne du er en guttermand ;-)

Og tak for svar de andre steder!

reddet i sidste øjeblik!
Avatar billede arne_v Ekspert
16. januar 2005 - 19:27 #11
så ligger jeg også et svar her
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