Avatar billede kernelx Juniormester
09. januar 2007 - 22:17 Der er 7 kommentarer og
1 løsning

fejl i koden

hi,
jeg har følgende kode
---
class test1
{
    private:
        test1 *value;

    public:
        void init(test1&);
};

void test1::init(test1& newValue)
{
    this->value = &newValue;
}


class test2
{
    public:
        void testFunction();
};

void test2::testFunction()
{
    test1 *tmpValue;

    tmpValue.init(tmpValue);  // her er fejlen et sted
}


int main()
{

}

---

g++ siger, at koden indeholder en fejl
test.cpp: In member function »void test2::testFunction()«:
test.cpp:26: Fejl: brug af elementet »init« i »tmpValue«, som er fra ikke-cass-typen »test1*«

er der en som kan hjælpe?

med venlig hilsen
KernelX
Avatar billede arne_v Ekspert
09. januar 2007 - 22:31 #1
void test2::testFunction()
{
    test1 tmpValue; // ingen *
    tmpValue.init(tmpValue);
}


vil jeg tro
Avatar billede bertelbrander Novice
09. januar 2007 - 22:33 #2
tmpValue er en pointer, så for at kalde dens init skal du bruge -> og ikke .
Argumentet til init er en reference, tmpvalue er stadig en pointer, så det er *tmpvalue der skal bruges som argument.
tmpvalue peger ikke på noget så du kan ikke kalde funktioner på den.

Du kan så lave:
void test2::testFunction()
{
    test1 *tmpValue = new test1;
    tmpValue->init(*tmpValue); 
    delete tmpValue;
}

Eller:
void test2::testFunction()
{
    test1 tmpValue;
    tmpValue.init(tmpValue);  // her er fejlen et sted
}
Avatar billede arne_v Ekspert
09. januar 2007 - 22:40 #3
ioevrigt undrer konstruktionen mig

du gemmer en pointer til objektet selv inde i objektet !?!?
Avatar billede kernelx Juniormester
09. januar 2007 - 22:52 #4
det jeg vil komme til at lave ... er en slaks array - hvor test1 indeholder fire forskellige værdier - plus - en pointer på det næste element.

test2 skal så arbejde med array-værdierne - og indeholder en variable f.eks.: valueCounter og en pointer på det første value
---
bare som en lille forklaring til - hvad jeg vil ud på at lave.
mit problem er, at hvis jeg har vældig-store arrays - og vil til at addere en værdi, så skal jeg til at kopere hele arrayet i et tmpArray - og så med
new bla = new array[xyz]
...
det er methoden man bruger mest i c++ hvis jeg ser det rigtigt. men det en methode jeg personligt ikke syndes så meget om.
så derfor ville jeg teste, om det er muligt på en anden methode :-)
Avatar billede kernelx Juniormester
09. januar 2007 - 22:55 #5
mange tak - det virker

husk begge at skrive et eller andet svar ... så er der 100 points til hver :-)
Avatar billede bertelbrander Novice
09. januar 2007 - 22:57 #6
Jeg samler ikke på point, og skrev vist bare det samme som Arne.
Avatar billede arne_v Ekspert
09. januar 2007 - 23:02 #7
er det en linked list (eller double linked list) du er ved at lave ?

det kan STL std::list goere out of the box
Avatar billede arne_v Ekspert
09. januar 2007 - 23:02 #8
og et svar fra mig
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