C++ Aufrufen einer Funktion aus der header-Datei in die Haupt -

Ich Schreibe ein fester Rechner. Ich versuche, die main.cpp Datei zu Lesen, in den Funktionen der Funktionen-Klasse, die in der functions.h.cpp -Dateien. Ich habe eine Funktion definiert, wie die folgenden für den einfachen Fall

double square(double aX)
 {
   return aX*aX;
 }

Diese Funktion arbeitet, wenn ich es in der main-Datei, obwohl es nicht arbeiten wollen, wenn ich versuche und rufen Sie es von der Haupt-Datei, wenn es sich im die Funktionen-Datei. Hier ist der code, den ich habe.

Dies ist mein Main.cpp Datei:

#include <iostream>
#include "IntegralCalculator.h"
#include "functions.h"

using namespace std;

int main()
  {
    IntegralCalculator Function(square);
    Function.print();
  }

Wie Sie sehen können, gibt es eine weitere Klasse namens " Integrale Rechner-die eigentlich die Berechnung des integrals, obwohl nichts falsch mit, dass, wie es funktioniert, wenn die definition der Funktion ist in der main, und der Funktion als parameter übergeben wird. Die functions.h - Datei ist wie folgt definiert:

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <iostream>
#include <cmath>
#include "IntegralCalculator.h"


class functions : public IntegralCalculator
 {
  public:
   functions();
   double square(double aX);

 };

#endif

und die functions.cpp Datei ist so definiert:

#include <iostream>
#include <cmath>
#include "functions.h"


double functions::square(double aX)
 {
   return aX*aX;
 }

Ich weiß, dass ich jetzt nicht brauchen, die <cmath> Bibliothek, obwohl ich ' m gehen zu müssen, es für kompliziertere Funktionen, wenn ich diese hinzufügen.

Ich habe versucht, erbt die Funktionen der Klasse in der main, und ich versucht haben, erstellen Sie einen Namensraum für die Funktionen der Klasse und die Definition der Funktion, jedoch keine dieser gearbeitet haben. Wenn ich gehe, um zu kompilieren, bekomme ich folgende Fehlermeldung:

Main.cpp: In function ‘int main()’:

Main.cpp:9: error: ‘square’ was not declared in this scope

Wenn jemand könnte bitte mir helfen herauszufinden, dieses problem. Dieser code, den ich versuche zu schreiben, ist mehr Fortgeschritten als meine Klasse übergegangen, und so bin ich nicht sicher, wie man es beheben, aber ich wollen, schreiben Sie das Programm auf diese Weise.

Dank im Voraus.

Edit: Im Fall, dass Sie neugierig waren, bin ich mit der functions.h und functions.cpp Dateien in das Makefile. Ich war immer den gleichen Fehler, wenn ich versuche zu setzen, die square(double aX) definition in der IntegralCalculator Klasse als gut. Gleichen Fehler.

  • Hast du das erklären double square(double aX) im functions.h?
  • Wenn du dir den Abschnitt, wo ich die functions.h - Datei, können Sie sehen, dass ich tun.
  • Dein problem scheint zu sein, dass Sie erklärt, die quadratische Funktion in den Funktionen der Klasse, so dass es eine member-Funktion, müssen Sie deklarieren es als Doppel-Funktionen::Quadrat(double ax){...}
  • Habe vergessen, das Teil in der post. Ich habe es, obwohl, und ich bekomme den gleichen Fehler.
  • Was ist die definition von IntegralCalculator::IntegralCalculator(????) (die constrcutor)?
  • Hast du auch erklären, die header-Funktion in den Funktionen.h-Datei und vergessen Sie es?, sollten Sie auch ein double square(double ax); irgendwo dort
  • Ich habe double square(double aX); deklariert in der header-Datei. Und es war in dem original-Beitrag, es sei denn, ich bin miss zu verstehen, was Sie versuchen zu sagen.
  • Der Konstruktor ist definiert als die folgende IntegralCalculator::IntegralCalculator(double aIntegrandFunction(double)) { userInput(); //return character here calcIntegral(aIntegrandFunction); //return }
  • Sie haben die quadratische Funktion als member-Funktion in die Funktionen Klasse, wenn Sie wollen, um die Quadrat-Funktion als eigenständige Funktion nicht in Verbindung mit der Klasse sollte es zwei Definitionen, eine für die member-Funktion und eine außerhalb des class Funktionen { ... } - block für die Globale Funktion
  • Ich zog die Deklaration der Funktion außerhalb der functions Klasse block, aber jetzt bin ich immer den folgenden Fehler: functions.cpp:6: error: no ‘double functions::square(double)’ member function declared in class ‘functions’ Das macht keinen Sinn.
  • Sie wollen nicht, um es zu verschieben, die Sie brauchen Erklärungen, Sie sind verschiedene Funktionen
  • warum class functions Erben IntegralCalculator? Gibt es einen Grund, ist es einfach nur random-code ohne Zweck?
  • Es ist random code ohne Zweck. Ich werde versuchen, den code komplizierter, obwohl ich es geändert und vergessen zu entfernen, dass ein Teil des Codes.
  • Es ist leider immer weniger selten, dass die Frage und das anschließende stream von Kommentaren ist eigentlich mehr verwirrend als der code.
  • Sollten Sie einen Vorschlag für Gewinde-Kommentare auf meta, das würde helfen 😉
  • Meine Antwort scheint ok zu sein nun, es hatte einige schlechte Fehler für eine Weile, die ich gerade fertig mit Befestigung (nur sagen, wenn Sie gefragt, WTF, oder insbesondere im Fall, dass Sie nicht merken, dass etwas komisch...).

InformationsquelleAutor Cmertin | 2013-03-26
Schreibe einen Kommentar