Warum bin ich immer error: initializing argument 1 of 'Element::Element(int)" [- fpermissive] in Eclipse, wenn ich versuche zu kompilieren mein C++ - code?

Ich bin neu bei C++, und haben schließlich aufgegeben zu versuchen, diese zu kompilieren, nachdem starrte es für zu lange. Der compiler scheint die Ablehnung der Konstruktor Prototyp in der header-Datei aus irgendeinem Grund... ich kann nicht herausfinden, was falsch mit es.

Element.h:

#ifndef ITEM_H_
#define ITEM_H_


class Item {
public:
    Item(int); //This line is what Eclipse keeps flagging up with the error in the title
    virtual ~Item();
    Item* getNextPtr();
    int getValue();
    void setNextPtr(Item *);
};

#endif /* ITEM_H_ */

In meinem Item.cpp Datei habe ich:

int val;
Item* nextPtr = 0;
Item::Item(int value) {
    val = value;
}

Item* Item::getNextPtr() {
    return nextPtr;
}

void Item::setNextPtr(Item *nextItem) {
    nextPtr = nextItem;
} 

int Item::getValue() {
    return val;
}

Item::~Item() {
    //TODO Auto-generated destructor stub
} 

Hoppla, ich bin mit dem GCC Compiler. Und ja, Sie hätte member-Variablen! Wie gehe ich über das tun, dass mit diesem format? Der code wo ich instanziieren Element unten. Ich bin mir bewusst, dass es keine Globale Variablen, die entweder...

#include "LinkList.h"
#include "Item.h"

Item* first = 0;
int length = 0;

LinkList::LinkList(int values[], int size) {
    length = size;
    if (length > 0) {
        Item firstItem = new Item(values[0]);
        Item *prev = &firstItem;
        first = &firstItem;
        for (int i = 0; i < size; i++) {
            Item it = new Item(values[i]);
            prev->setNextPtr(&it);          //set 'next' pointer of previous item to current item
            prev = &it;                     //set the current item as the new previous item
        }

    }
}

LinkList::~LinkList() {
    for (int i = 0; i < length; i++) {
        Item firstItem = *first;
        Item *newFirst = firstItem.getNextPtr();
        delete(first);
        first = newFirst;
    }
}

int LinkList::pop() {
    Item firstItem = *first;
    first = firstItem.getNextPtr();
    return firstItem.getValue();
}

Ich habe gerade bemerkt einen Fehler mit der Funktionalität von pop() und Destruktor-Funktionen... bitte ignorieren, ich will einfach nur, um herauszufinden, was falsch mit der Instanziierung des Elements.

GCC-Fehler:

Info: Internal Builder is used for build
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\LinkList.o" "..\\src\\LinkList.cpp" 
..\src\LinkList.cpp: In constructor 'LinkList::LinkList(int*, int)':
..\src\LinkList.cpp:16:38: error: invalid conversion from 'Item*' to 'int' [-fpermissive]
..\src\/Item.h:14:2: error:   initializing argument 1 of 'Item::Item(int)' [-fpermissive]
..\src\LinkList.cpp:20:32: error: invalid conversion from 'Item*' to 'int' [-fpermissive]
..\src\/Item.h:14:2: error:   initializing argument 1 of 'Item::Item(int)' [-fpermissive]

21:24:26 Build Finished (took 256ms)
Poste den code, wo Sie Verwendung - Element, und die vollständige Fehlermeldung von gcc (einschließlich der Zeilennummern)
Ich glaube wirklich, Sie wollen tatsächlich, dass val und nextPtr member-Variablen Item eher als globals...
Sie sind nicht beim initialisieren Item überall im geposteten code...
Eclipse ist eine IDE, kein compiler. Es wäre hilfreich zu wissen, welchen compiler Sie verwenden, zusammen mit einem SSCCE, die das problem reproduziert. Es gibt nichts syntaktisch falsch mit Ihrem code. Aber warum auf der Erde Sie initialisiert eine Globale variable mit dem argument des Konstruktors?
g++ - reporting-zwei Fehler, nicht vier. Jeder Fehler enthält zwei Standorten es denkt, möchten Sie vielleicht, zu betrachten. Element.h ist in Ordnung, aber LinkList.cpp fälschlicherweise versucht eine Erklärung im Artikel.h.

InformationsquelleAutor user1804523 | 2013-01-08

Schreibe einen Kommentar