Freitag, Juni 5, 2020

C++ – Error C2511: überladene Memberfunktion nicht in ‚BMI‘

Bekam eine Fehlermeldung auf meinem C++ – Programm. Es ist wahrscheinlich etwas einfacher, da ich gerade erst angefangen Programmieren.

Der Fehler ist:

Error   1   error C2511: 'void BMI::getWeight(double)' : overloaded member function not found in 'BMI'  c:\users\**********\documents\visual studio 2012\projects\project2\project2\bmi.cpp 40  1   Project2

bmi.h:

#include <iostream>
#include <string>

using namespace std;

#ifndef BMI_H
#define BMI_H

class BMI {
public:
    //Defualt Constructor
    BMI();

    //Overload Constructor
    BMI(string, int, double);

    //Destructor
    ~BMI();

    //Accessor Functions
    string getName() const;
        //getName - returns name of paitent

    int getHeight() const;
        //getHeight - returns height of paitent

    double getWeight() const;
        //getWeight returns weight of paitent


private:
    //Member Variables
    string newName;
    int newHeight;
    double newWeight;
};

#endif

bmi.cpp:

//Function Definitions
#include "BMI.h"

BMI::BMI() {
  newHeight = 0;
  newWeight = 0.0;
}

BMI::BMI(string name, int height, double weight) {
  newName = name;
  newHeight = height;
  newWeight = weight;
}

BMI::~BMI() {

}

string BMI::getName() const {
  return newName;
}

int BMI::getHeight() const {
  return newHeight;
}

double BMI::getWeight() const {
  return newWeight;
}

void BMI::setName(string name) {
  newName = name;
}

void BMI::setHeight(int height) {
  newHeight = height;
}

void BMI::setWeight(double weight) {
  newWeight = weight;
}
  • Wo ist dein header-Datei?
  • Zwei Gedanken: schließen Sie Ihre header Datei und das kürzeste Programm, das das problem veranschaulicht.
  • Sorry @OldProgrammer, ich habe vergessen, es aufzunehmen, nur stellte es auf pastebin hier – pastebin.com/57hZnvvb
  • Bitte nie setzen Sie eine using-Direktive im header.
  • Sie scheinen sich noch nicht festgelegt haben, jede setter in Ihrem Kopf.
  • Es sei denn, ich bin blind, es gibt keine solche Funktion, void BMI::getWeight(double), erklärt in Ihrem header oder cpp Datei geschrieben.
  • noch gibt es einen, aufgerufen in Zeile 40…
  • langsam alt, huh? (ich sehe es nicht, entweder wenn)

InformationsquelleAutor moakeseey | 2013-12-15

2 Kommentare

  1. 4

    Ok, wenn ich versuche, den code zu kompilieren, ich sehe ein paar Probleme:

    • Der setName(string) – Funktion in der .cpp nicht mit nichts in der Kopfzeile.
    • Die setHeight(int) – Funktion in der .cpp nicht mit nichts in der Kopfzeile.
    • Die setWeight(Doppel -) Funktion in der .cpp nicht mit nichts in der Kopfzeile.

    Ich würde versuchen zu lösen, die Zusammenstellung Fehler in der Reihenfolge, wie Sie auftreten, und dann sehen, ob Sie immer noch ein problem mit getWeight. Ich gehe davon aus, dass Sie sehen die gleichen Probleme mit den nicht deklarierten Funktionen, die ich bin zu sehen.

  2. 0

    Fehler erscheint, zu sagen, dass Sie versuchen, rufen Sie BMI::getWeight() irgendwo, und Sie werden übergeben Sie einen parameter mit einem double geben. Dieser Fehler ist ein bisschen verwirrend, da keine solche Funktion entspricht void BMI::getWeight(double) definiert, die entweder in der BMI-Klasse in der header-Datei oder der cpp-Datei. Wenn Sie den code veränderte, seit Sie gepostet hat, dann bitte update und post ALLE compiler-Meldungen. Ich vermute, dass Sie keine Beiträge geschrieben haben, alle compiler-Meldungen, weil SetName,setHeight und setWeight sind alle fehlt der BMI-Klasse definition. So stellen Sie sicher, dass Sie alle diejenigen, die in der BMI-Klasse.

    Ich denke auch, dass es eine gute übung, um Ihre Daten-member initialisieren anders. Also statt:

    BMI::BMI(string name, int height, double weight) {
      newName = name;
      newHeight = height;
      newWeight = weight;
    }

    sollten Sie bevorzugen:

    BMI::BMI(string name, int height, double weight):
      newName(name),
      newHeight(height),
      newWeight(weight)
    { }
    • Danke, ich habe nur begann zu Lesen über c++ für ein paar Tage und habe es heute gehen. Seine sehr schwer im Vergleich zu python..
    • c++ ist eine große Sprache und sehr leicht, schlechten code zu schreiben, wenn Sie nicht Folgen gute Konventionen. Hast du am Ende immer diesen code zu kompilieren, richtig?
    • ja habe ich, ich schließen Sie visual studio, und dann öffnete es erneut und es funktionierte wieder, es war ein Fehler, dass stecken, aber es war alles wieder funktioniert.

Kostenlose Online-Tests