fout: verwachte ongekwalificeerde-id fout: betekenis en oplossing?

Ik ben net C++ aan het leren, komend uit python3 en QBASIC, en ik vind het erg moeilijk om de compilerfouten te lezen en te begrijpen, waardoor het moeilijk is om fouten op te sporen.

Het probleem dat ik heb is dat ik steeds de compilatiefout blijf maken:

fout: verwachte niet-gekwalificeerde id

Dit gebeurt op de 10e en 18e regel.

Ik probeer dit programma te compileren met linuxs’ g++:

g++ proto.cpp -o prototype

De code voor het programma staat hieronder.

#include <iostream>
#include <string>
using namespace std;
//Declaring Functions
//Trouble Function
int mult ( double x, double y );
{
    return x * y;
}
//Trouble Function
int dive ( double x, double y );
{
    if ( y == 0 )
    {
        cout<<"Error, cannot divide by zero.\n";
        return;
    }
    else
    {
        return x / y;
    }
}
//This error doesn't occur beyond this point.
int plus ( double x, double y );
{
    return x + y;
}
int min ( double x, double y );
{
    return x - y;
}
//End of global declarations.
//I would have made them local functions if not
//for an entirely set of unrelated problems.
int main()
{
    cout<<"Please enter two numbers.\n"<<"\n";
    int num1;
    int num2;
    cin>>num1;
    cin>>num2;
    string returnz = "<unknown>";
    while ( returnz != "no" )
    {
        cout<<"What would you like to do with the numbers>\n";
        cout<<'\n'<<"Enter ( mult ) to multiply, ( min ) to subtract, ( plus ) to add, and ( dive ) to divide.\n";
        getline( cin, returnz, '\n' );
        if ( returnz == "mult" )
        {
            double result = mult ( num1, num2 );
            cout<<num1<<" * "<<num2<<" = "<<result<<"\n";
            continue;
        }
        else if ( returnz == "dive" )
        {
            double rest = dive ( num1, num2 );
            cout<<num1<<" / "<<num2<<" = "<<rest<<"\n";
            continue;
        }
        else if ( returnz == "plus" )
        {
            double res = plus ( num1, num2 );
            cout<<num1<<" + "<<num2<<" = "<<res<<"\n";
            continue;
        }
        else if ( returnz == "min" )
        {
            double re = min ( num1, num2 );
            cout<<num1<<" - "<<num2<<" = "<<re<<"\n";
            continue;
        }
        else
        {
            break;
        }
    }
}

Het doel is om de gebruiker in staat te stellen een paarnummers in te voeren en geeft ze vervolgens de optie om bepaalde operators op het nummer te gebruiken.

Opmerking, ik ben nieuw in deze taal, dus het is waarschijnlijk bezaaid met syntaxisfouten en inconsistenties. De vraag is echter, waarom wordt de niet-gekwalificeerde ID getrokken voor deze twee, (maar niet de anderen), wat betekent het, en hoe zou men dit gaan om dit te bevestigen.

Ik vraag hier omdat ik het zelfstandig probeer te leren, daarom heb ik geen instructeur of peers om te draaien. Advies over hoe ik dit in een effectievere code had kunnen doen, is ook welkom en zou zeer op prijs worden gesteld.

Bedankt.

Fouten zoals ze verschijnen in terminal:

proto.cpp:10:1: error: expected unqualified-id before ‘{’ token
{
^
proto.cpp:18:1: error: expected unqualified-id before ‘{’ token
{
^

Antwoord 1, Autoriteit 100%

Zoals aangegeven door @user657267, verwijder de puntkomma’s bij het declareren van een functie en de implementatie ervan. Als je

. zou hebben

int some_function(int a, int b);

boven het hoofdmenu en de implementatie van die functie onder het hoofd

int some_function(int a, int b) {
    //something happens here
     return a;
}

Dat zou goed zijn. De implementatie kan ook boven de main gaan en dan hoef je niet de eerste regel te schrijven die de functie definieert. De reden dat de definitie of implementatie boven de main moet staan, is dat c, of c++ wat dat betreft, de functie anders niet kan zien, wat ook zal gooien en fouten maken.

Other episodes