"Verwendung von plus () ist mehrdeutig" Fehler

7

Ich versuche eine Funktion zu schreiben, die zwei Zahlen nimmt und ihre Summe ausgibt.

%Vor%

und Fehler bekomme ich:

%Vor%

Es ist mein erstes C ++ - Programm und in der Tat bin ich blind, einen Fehler zu finden.

    
Jac08H 23.07.2015, 16:52
quelle

2 Antworten

19

Entweder tun

%Vor%

Oder benennen Sie die Funktion um. Dies ist eine gute Lektion, warum using namespace std nicht als gute Praxis angesehen wird.

    
yizzlez 23.07.2015 16:53
quelle
14

Es gibt bereits ein Funktionsobjekt im std Namespace mit dem Namen plus . Wegen using namespace std; wird std::plus in den globalen Namespace eingetragen, wo auch Ihr plus() steht. Wenn Sie versuchen, plus() aufzurufen, kann der Compiler nicht feststellen, ob Sie auf std::plus oder plus() verweisen, da sie sich beide im globalen Namespace befinden.

Sie haben die folgenden Optionen:

  1. Entfernen Sie using namespace std; (Sie müssen dann andere Funktionen im Namensraum std qualifizieren - z. B. std::cout ).
  2. Setzen Sie Ihre plus() in einen eigenen Namensraum (zB mine ) und rufen Sie sie mit mine::plus(a, b) .
  3. auf
  4. Rufen Sie Ihre Funktion mit ::plus() wie vorgeschlagen auf (vorausgesetzt, Sie geben sie nicht in ihren eigenen Namensraum ein).
  5. Benennen Sie die Funktion um, so dass keine Namenskollision auftritt.
Null 23.07.2015 17:04
quelle

Tags und Links