Ganske enkelt tutorial program, jeg har problemer

Tags:    c++ html html5 audio

Hej jeg sidder med et program der ikke brokker sig når jeg skriver #include <iostream.h>, men tilgengæld ikke vil når jeg fjerner .h
det ser sådan her ud, til skulle vist ikke være svært for nogen herinde, men jeg har siddet med det et par timer. Hvordan løser jeg det problem:

float plus (float a, float b)
{
float r;
r=a+b;
return (r);
}

float minus (float a, float b)
{
float r;
r=a-b;
return (r);
}

float gange (float a, float b)
{
float r;
r=a*b;
return (r);
}


Fejlen lyder: float plus (float a, float b)
{
float r;
r=a+b;
return (r);
}

float minus (float a, float b)
{
float r;
r=a-b;
return (r);
}

float gange (float a, float b)
{
float r;
r=a*b;
return (r);
}

Fejlen lyder: C:/Dev-Cpp/Unavngivet1.cpp: In function `int main()':
C:/Dev-Cpp/Unavngivet1.cpp:21: use of `plus' is ambiguous
C:/Dev-Cpp/pmg.h:1: first declared as `float plus(float, float)' here
C:/Dev-Cpp/include/c++/bits/stl_function.h:128: also declared as `
template<class _Tp> struct std::plus' here

C:/Dev-Cpp/Unavngivet1.cpp:21: use of `plus' is ambiguous
C:/Dev-Cpp/pmg.h:1: first declared as `float plus(float, float)' here
C:/Dev-Cpp/include/c++/bits/stl_function.h:128: also declared as `
template<class _Tp> struct std::plus' here


mvh
AO

(PS: fatter stadig ikke point-systemet, hvad er rimeligt for sådan et spørgsmål)



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du skal bare omdøbe din 'plus' funktion til noget andet, fx plus2.
Dine fejlmeddelser siger at funktionen 'plus' allerede findes i 'std::plus', og da du (højst sandsynligt) bruger 'using namespace std', så kan du ikke også have en funktion, der hedder 'plus'.
Du kan lade være med at bruge std namespace, men så bliver du nødt til at skrive std:: foran fx std::vector og std::string hele tiden.

1101110100010110000101000001



HVorfor vil du fjerne .h?
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Ja, så fungerer det (efter et par andre små rettelser)...
Jeg vil fjerne .h fordi det har jeg lært :) Den bog jeg følger "Grundlæggende programmering i c++" af Henrik Tange, er eksemplerne uden .h derfor vil jeg også gerne have mine opgaver til at fungere på samme måde.

mvh
AO



Jeg kan se jeg har fået pasted en ret ufuldendt kode, hvis nogen skulle være interesserede er den her:

#include "pmg.h"
#include <iostream>
using namespace std;

int main ()
{
float z;
float x = 0;
float y = 0;
int nOperator;
cout << "skriv et tal: ";
cin >> x;
cout << endl << "+(1), -(2), *(3): ";
cin >> nOperator;
cout << endl << "Skriv et andet tal: ";
cin >> y;

switch (nOperator)
{
case 1:
z = plus1 (x,y);
break;
case 2:
z = minus1 (x,y);
break;
case 3:
z = gange (x,y);
break;
default: cout << "forkert indtastning";
}

cout << "Resultatet er: " << z;

return 0;
}

float plus1 (float x, float y)
{
float r;
r=x+y;
return (r);
}

float minus1 (float x, float y)
{
float r;
r=x-y;
return (r);
}

float gange (float x, float y)
{
float r;
r=x*y;
return (r);
}






Blot et par små pedantiske bemærkninger:

1: Der er ingen iostream.h, vector.h, etc i standard C++, der er iostream, vector, etc. Nogle kompilere har iostream.h, vector.h osv, men det gør dem ikke til standard headerfiler. Man bør altid bruge standard headerfiler hvis man kan, så er der størst chance for at ens program opfører sig ens på diverse platforme.

2: Hvis man bruger iostream, og ikke ønsker at bruge "using namespace std;" (f.ex fordi man vil undgå navne sammefald med standard funktioner/typer/etc) og ikke gidder skrive std::cout igen og igen kan man bruge "using std::cout".

Et lille eksempel:

Fold kodeboks ind/udKode 




t