initializing argument 1 of... [-fpermissive]

Ich bin neu in c++ und mit eclipse cdt auf ubuntu installieren und diese Fehlermeldung bekommen in meiner header-Datei:

initializing argument 1 of 'std::map<basic_string<char>,Supplier*> Engine::processSupplierFile(char*)' [-fpermissive]

Ich schon gesucht für diesen Fehler und fand diese:
Warum bin ich immer error: initializing argument 1 of 'Element::Element(int)" [- fpermissive] in Eclipse, wenn ich versuche zu kompilieren mein C++ - code?

aber es didn ' T haben alle Antworten, die über die header-Datei Fehler.

hier ist der code der header-Datei: (Lieferant ist ein einfaches Objekt mit zwei string und double)

#ifndef Engine_H_
#define Engine_H_

#include "Ingredient.h"
#include "Product.h"
#include "Supplier.h"

#include <stdio.h>
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <map>
#include <algorithm>
#include <vector>

using namespace std;

class Engine {
public:
    Engine();
    virtual ~Engine();
    string fileToString(string fileName);
    void processLoggerFile (char* fileName);
    string fileToString(char* fileName);
    vector<Product> processProductsFile(char* fileName, const map<string, Ingredient> &cheapestIngredients); 
    map<string, Supplier*> processSuppliersFile(char* fileName); //this line produces the error
    map<string, Ingredient> findCheapestPrices(vector<Supplier> &suppliers);
    map<string, Product*> createMenu(vector<Product>& products);
    void supplierPriceChange(vector<Product>& products, map<string,Product*>& menu,vector<Supplier>& suppliers, map<string, Ingredient> cheapestIngredients, string supName, string ingName, double newPrice);
};

#endif /* Engine_H_ */

Wer weiß, was diesen Fehler verursacht?
vielen Dank im Voraus

BEARBEITEN (Lieferant.h Hinzugefügt)

/*
 * Supplier.h
 *
 *  Created on: Nov 10, 2013
 *      Author: tom
 */

#ifndef SUPPLIER_H_
#define SUPPLIER_H_

#include <string>

using namespace std;

class Supplier {
public:
    Supplier();
    Supplier(const Supplier& supplier);
    Supplier(string supName, string ingName, double price);
    Supplier& operator=(const Supplier& supplier);
    virtual ~Supplier();
    string getSupplierName() const;
    string getIngredientName() const;
    double getPrice() const;
    void setPrice(double price);

private:
    string _ingredientName;
    string _supplierName;
    double _price;

};

#endif /* SUPPLIER_H_ */
  • Forward-Deklaration Lieferant sollte hier genügen. Ich denke, es ist eine zirkuläre Abhängigkeit Problem. Sie sollten entfernen Sie alle Codes, die nicht im Zusammenhang mit dem Thema, aber die erforderlichen bits zu rekonstruieren: Was ist ein Supplier?
  • u r right, krank hinzufügen.
  • vermutlich Supplier deklariert ist Supplier.h.
  • Ja, und das ist hilfreich, auf welche Weise? Ich sehe nicht Supplier.h. Der Fehler dort sein könnte.
  • Zwei Dinge über Ihre header-Dateien: Sie reservierte Bezeichner (starten Sie den Daten-Feldnamen mit einem Unterstrich beginnen, sind Sie nicht berechtigt, das zu tun). Zweitens, werden Sie nicht verwenden using namespace std im header-Dateien.
  • ich verwendete Unterstriche und using namespace in viele andere Dateien und nicht keine Fehler bekommen..
  • es ist relevant, denn wenn Supplier waren nicht deklariert der compiler würde sich beschweren, dass "'Lieferant' wurde nicht deklariert" sondern als die "initializing argument 1" Fehler.
  • Tatsächlich, diese sind legal. Namen beginnen mit einem Unterstrich, gefolgt von einem Kleinbuchstaben reserviert sind, im globalen Bereich nur. So wie die Namen, Sie sind in Ordnung.
  • in der Regel die "initializing argument 1 von" Fehler zusammen mit anderen Fehlern - das sollten Sie zeigen, als auch diejenigen, die in Ihrer Frage (zusammen mit dem code, auf die Sie verweisen). Ich vermute, das eigentliche problem ist an der Stelle, wo Sie versuchen, zu nennen processSuppliersFile()
  • Es ist irrelevant, ohne zu sehen, die eigentliche Erklärung. Warum? Denn jetzt sehen wir es, es ist nicht standard-konformen code. Das könnte das Problem sein. "Beim Debuggen, denken Sie wie ein compiler"
  • Angew Oh, wusste nicht, dass. Vielen Dank für den Hinweis.
  • sehen diese SO Artikel für details über die Probleme, die stefan erwähnt: stackoverflow.com/questions/228783/... und stackoverflow.com/questions/4872373/..., Die sagte, ich glaube nicht, dass mögliche Probleme haben nichts mit dem problem zu tun, die in Ihrer Frage.
  • Es ist schwer zu erkennen, dass die wahre Ursache der Probleme hier. Bitte reduzieren Sie Ihre code, um die minimale code-Beispiel, das bewirkt, dass die exakte gleiche Problem. Auch stellen Sie sicher, dass es der erste Fehler mit dem compiler-Ausgänge (E. g. für g++ verwenden -Wfatal-errors)
  • processSuppliersFile ist nicht das gleiche wie processSupplierFile du bist also nicht die Entsendung der wirkliche Fehler oder Buchung nicht den richtigen code. Und poste die ganze Fehlermeldung; es kann über zwei oder mehr Zeilen.
  • ich tippte den Fehler manuell. das ist wahrscheinlich ein Tippfehler.

InformationsquelleAutor Tom | 2013-11-16
Schreibe einen Kommentar