2016-07-03 12 views
-6

Dies ist mein erstes Mal versuchen, einen Header in meine C++ - Hausaufgaben zu integrieren. Wir haben es noch nicht im Unterricht behandelt, ich bin nur ehrgeizig. Ich arbeite mit Clion.C++ - Header und Hauptfehler

Wenn es nicht offensichtlich ist, ist mein Ziel, zwei Funktionen in der Kopfzeile zu buchstabieren, 1, um von Celsius nach Fahrenheit zu konvertieren, das andere ist das Gegenteil.

Fehler:

/home/dylan/ClionProjects/tempconversion/main.cpp:18:1: error: expected unqualified-id before ‘if’ 
if (choice = 1); 
^ 
/home/dylan/ClionProjects/tempconversion/main.cpp:19:1: error: expected unqualified-id before ‘{’ token 
{ 
^ 
/home/dylan/ClionProjects/tempconversion/main.cpp:23:1: error: expected unqualified-id before ‘else’ 
else if (choice = 2) 
^ 
/home/dylan/ClionProjects/tempconversion/main.cpp:27:1: error: expected unqualified-id before ‘else’ 
else if (choice = 0) 
^ 
/home/dylan/ClionProjects/tempconversion/main.cpp:31:1: error: expected unqualified-id before ‘else’ 
else 
^ 

functions.h Header:

// 
// Created by dylan on 7/3/16. 
// 

#ifndef TEMPCONVERSION_FUNCTIONS_H 
#define TEMPCONVERSION_FUNCTIONS_H 
#include <iostream> 
int choice; 
int degrees; 
double degrees2; 



double f2c() 
{ 
    std::cout << "Enter the degree count in whole numbers \n"; 
    std::cin >> degrees; 
    degrees2 = (degrees-32)/1.8; 
    std::cout << degrees2; 
} 

double c2f() 
{ 
    std::cout << "Enter the degree count in whole numbers \n"; 
    std::cin >> degrees; 
    degrees2 = (degrees * 1.8) + 32; 
    std::cout << degrees2; 
} 
#endif //TEMPCONVERSION_FUNCTIONS_H 

main.cpp

include <iostream> 
#include </home/dylan/ClionProjects/tempconversion/functions.h> 


using namespace std; 

int conMenu() 
{ 
    std::cout << "Would you like to: \n"; 
    std::cout << "1. Convert Celsius to Fahrenheit \n"; 
    std:: cout << "2. convert Fahrenheit to Celsius \n"; 
    std::cout << "0. Exit the program"; 
    std:: cout << "Please enter your choice: "; 
    std::cin >> choice; 

} 

if (choice = 1); 
{ 
double c2f(); 
} 

else if (choice = 2) 
{ 
double f2c(); 
} 
else if (choice = 0) 
{ 
return 0; 
} 
else 
{ 
return 0; 
} 
+0

Sie haben keine 'main()' -Funktion implementiert. Du solltest damit anfangen. – owacoder

+0

'if'-Anweisungen können nur in Funktionen verwendet werden. Vielleicht wollten Sie sie in "main" bringen, was Sie nicht definiert haben. –

+0

'=' anstelle von '=='. Semikolon nach 'if()'. Nein 'main()'. Variablen in der '.h'. Dinge, die wie Funktionsdeklarationen in if-Anweisungen aussehen. Gratulation, dass du weiterkommen willst, aber hier ist so viel falsch, dass du vielleicht ein bisschen zu weit gesprungen bist ... – John3136

Antwort

0

Ein Programm beginnt mit der main Funktion, die Sie haben und nicht alles sollte in Funktion sein. Ihre if Aussagen sind außerhalb Ihres Programms, die nicht

arbeiten

Es gibt einen Unterschied zwischen = und ==:

= die Affektiertheit ist, etwas sagen zu etwas

== gleich sein wird für comparaison verwendet .

Hier ersetzen Sie main.cpp-Datei mit, dass:

#include <iostream> 
#include </home/dylan/ClionProjects/tempconversion/functions.h> 


using namespace std; 

int main() // every program in C++ MUST HAVE AN int main() function 
{ 
    std::cout << "Would you like to: \n"; 
    std::cout << "1. Convert Celsius to Fahrenheit \n"; 
    std:: cout << "2. convert Fahrenheit to Celsius \n"; 
    std::cout << "0. Exit the program"; 
    std:: cout << "Please enter your choice: "; 
    std::cin >> choice; 

    if (choice == 1); // is choice equal to 1 ? 
    { 
     double c2f(); 
    } 

    else if (choice == 2) // is choice equal to 2 ? 
    { 
     double f2c(); 
    } 
    else if (choice == 0) // is choice equal to 0 ? 
    { 
     return 0; 
    } 

    return 0; 
// in every case, because it is "int main()" the program should return an integer, here is 0 

} 

Ein weiteres Problem, wenn eine Funktion Rückkehr etwas, müssen Sie die Funktion sagen, welche Daten für exemple zurückzukehren, int main() eine ganze Zahl zurück. Wenn nichts zurück ist, schreibe void nameFunction(), denn in deiner functions.h Datei gibt deine Funktion tatsächlich nichts zurück, aber du sagst deinem Programm, dass sie double wie double f2c() zurückgeben. Ersetzen Sie sie durch void f2c().

Tipps: Sie sollten wirklich mehr über C++ lernen Programmierung

1

Es ist wahr, dass Sie mit der Integration der Header-Dateien ein Problem haben. Die Kompilierungsfehler haben jedoch nichts mit Header-Dateien zu tun. Sie haben hier zwei verschiedene Probleme.

Die Compilerfehler sind, weil Ihre if() Anweisung nicht in irgendeiner Funktion ist. Dies ist ziemlich offensichtlich, sobald Sie sich fragen, welche Funktion ist das if() Statement ein Teil von?

(Die if-Anweisung ist sowieso falsch, weil es offensichtlich ist, dass es == Operator anstelle der = Zuweisungsoperator verwenden sollte, aber das ist per se nicht der Grund für die Kompilierungsfehler, aber das muss sein auch behoben).

Soweit integrierende Header-Dateien gehen: Sie definieren ganze Funktionen in den Header-Dateien. Obwohl technisch gesehen nichts falsch ist, sollten Header-Dateien nur zum Deklarieren von Funktionen und Klassen verwendet werden. Dies gilt insbesondere, wenn Sie beginnen, über Header-Dateien zu lernen.

Sobald Sie verstehen, wie Header-Dateien arbeiten, und Sie mehr wissen, C++, dann werden Sie in der Lage zu verstehen, wenn Sie können ganze Funktionen in Header-Dateien und welche Art von Funktionen.