Overloading operator

Status
Niet open voor verdere reacties.

manhaeve5

Gebruiker
Lid geworden
9 jan 2007
Berichten
276
Ik heb een class breuken en ik wil de operator "=" overloaden dit is m'n code:
Code:
breuk operator=(int getinfo){
                                              breuk breuk1;
                                              breuk1.teller=getinfo;
                                              return breuk1;
                                              }
en in m'n main staat er dit:
Code:
breuk breuk1=1;
en ik krijg deze foutmelding
Code:
conversien from int to non-scalar type"breuk"
 
Laatst bewerkt:
Moeten er geen dubbele puntjes tussen... ?

breuk::operator=();
 
een class die ik gebruik in een app waar ik nu mee bezig ben


Code:
    struct loglist
        {
        int circquadr;
        float centerx;
        float centerz;
        float rotspeed;
        float lookz;
        float lookx;
        float camposx;
        float camposz;
        char extras[512];
        loglist( int circquadr=0, float centerx=0.00, float centerz=0.00, float rotspeed=0.00,
                    float lookz=0.00, float lookx=0.00, float camposx=0.00, float camposz=0.00 )
            :circquadr(circquadr), centerx(centerx), centerz(centerz), rotspeed(rotspeed),
            lookz(lookz),lookx(lookx),camposx(camposx),camposz(camposz)
            {
            for(int x = 0; x < 512; x++)
                {
                extras[x]=*"";
                }
            };
        loglist loglist::operator=(loglist x)
            {
            circquadr = x.circquadr;
            centerx = x.centerx;
            centerz = x.centerz;
            rotspeed = x.rotspeed;
            lookz = x.lookz;
            lookx = x.lookx;
            camposx = x.camposx;
            camposz = x.camposz;
            };
        loglist loglist::operator+=(loglist x)
            {
            circquadr = x.circquadr;
            centerx = x.centerx;
            centerz = x.centerz;
            rotspeed = x.rotspeed;
            lookz = x.lookz;
            lookx = x.lookx;
            camposx = x.camposx;
            camposz = x.camposz;
            for(int y = 0; y < 512; y++)
                {
                extras[y]=x.extras[y];
                }
            };
        void loglist::setvars( int circquadr=0, float centerx=0.00, float centerz=0.00, float rotspeed=0.00,
                    float lookz=0.00, float lookx=0.00, float camposx=0.00, float camposz=0.00 )
            {
            circquadr = circquadr;
            centerx = centerx;
            centerz = centerz;
            rotspeed = rotspeed;
            lookz = lookz;
            lookx = lookx;
            camposx = camposx;
            camposz = camposz;
            for(int x = 0; x < 512; x++)
                {
                extras[x]=*"";
                }
            }
        };
 
m'n code nu
Code:
breuk breuk::operator=(int getinfo){
                                              breuk breuk1;
                                              breuk1.teller=getinfo;
                                              return breuk1;
                                              }
en toch dezelfde fout
 
kan je je hele class en de code in je main() posten? want zoals ik het zie wil je een class hetzelfde maken als een andere waarde.

ik weet uberhaupt niet eens of je wel een integer aan een =operator van een class toe kunt voegen. mja als je die hele class post kan ik wat experimenteren hier.

p.s. je kunt ook een SetVar() functie maken mja ik geef toe = is makkelijker.
 
Main:
Code:
#include <cstdlib>
#include <iostream>
#include "breuken.h"

using namespace std;

int main()
{
    breuk breuk1=1;
    return 0;
}
class:
Code:
#ifndef BREUKEN_H
#define BREUKEN_H
using namespace std;
class breuk
{
      public:
             int teller, noemer;
             breuk operator=(int getinfo);
};
#endif
implementation file:
Code:
#include "breuken.h"
breuk breuk::operator=(int getinfo){
                                              breuk breuk1;
                                              breuk1.teller=getinfo;
                                              return breuk1;
                                              }
 
zoals ik al dacht kun je niet een integer naar een = operator sturen. wat ik altijd doe in zulk soort gevallen is een += operator gebruiken, zie dit als een enhanced = ;)
de code die ik heb is zo:
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

class breuk
    {
    public:
    int teller, noemer;
    breuk operator+=(int getinfo);
    breuk( int teller = 0, int noemer = 0 )
        :teller(teller), noemer(noemer)
        {};
    };

int main()
    {
    breuk breuk1;
    breuk1 += 5;
    cout << breuk1.teller << endl << breuk1.noemer;
    cin.get();
    return 0;
    }

breuk breuk::operator+=(int getinfo)
    {
    teller=getinfo;
    }

het is wat lastiger maar het werkt wel op deze manier. ohja je moet dit natuurlijk even zelf oop maken, daar had ik geen zin in :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan