2016-12-09 3 views
0

main.cppNamespace :: Funktion kann nicht als Funktion

#include "Primes.h" 
#include <iostream> 

int main(){ 
    std::string choose; 
    int num1, num2; 
    while(1 == 1){ 
     std::cout << "INSTRUCTIONS" << std::endl << "Enter:" << std::endl 
        << "'c' to check whether a number is a prime," << std::endl 
        << "'u' to view all the prime numbers between two numbers " 
        << "that you want," << std::endl << "'x' to exit," 
        << std::endl << "Enter what you would like to do: "; 
     std::cin >> choose; 
     std::cout << std::endl; 
     if(choose == "c"){ 
      std::cout << "Enter number: "; 
      std::cin >> num1; 
      Primes::checkPrimeness(num1) == 1 ? 
      std::cout << num1 << " is a prime." << std::endl << std::endl : 
      std::cout << num1 << " isn't a prime." << std::endl << std::endl; 
     }else if(choose == "u"){ 
      std::cout << "Enter the number you want to start seeing primes " 
         << "from: "; 
      std::cin >> num1; 
      std::cout << "\nEnter the number you want to stop seeing primes " 
         << "till: "; 
      std::cin >> num2; 
      std::cout << std::endl; 
      for(num1; num1 <= num2; num1++){ 
       Primes::checkPrimeness(num1) == 1 ? 
       std::cout << num1 << " is a prime." << std::endl : 
       std::cout << num1 << " isn't a prime." << std::endl; 
      } 
     }else if(choose == "x"){ 
      return 0; 
     } 
     std::cout << std::endl; 
    } 
} 

Primes.h

#ifndef PRIMES_H 
#define PRIMES_H 

namespace Primes{ 
    extern int num, count; 
    extern bool testPrime; 
    // Returns true if the number is a prime and false if it isn't. 
    int checkPrimeness(num); 
} 

#endif 

Primes.cpp

#include "Primes.h" 
#include <iostream> 

int Primes::checkPrimeness(num){ 
    if(num < 2){ 
     return(0); 
    }else if(num == 2){ 
     return(1); 
    }else{   
     for(count = 0; count < num; count++){ 
      for(count = 2; count < num; count++){ 
       if(num % count == 0){ 
        return(0); 
       }else{ 
        testPrime = true; 
        if(count == --num && testPrime == true){ 
         return(1); 
        } 
       } 
      } 
     }  
    } 
} 

ich die folgenden drei Fehler erhalten verwendet werden: Errors from terminal

Ich habe Stunden fo verbracht r Tage und immer noch kann nicht scheinen, die Fehler zu beheben. Ich habe versucht, mit extern und so ziemlich alles, was ich mir vorstellen kann.

Antwort

0

Dies ist ein Fehler in Deklaration Funktion:

int checkPrimeness(num); 

Variable checkPrimeness initialisiert mit num definiert eine globale ganze Zahl! Um eine Funktion zu deklarieren, sollte sie wie folgt geändert werden:

int checkPrimeness(int); 

Kann nicht verstehen, warum Sie Parameter als externe Variablen deklarieren. Um Deklarationen und Realisierungen zu teilen, sollten Sie alle Funktionen und Klassen in der Header-Datei deklarieren und in der Quelldatei definieren.

+0

Danke! Ich habe immer noch einige Fehler, ich habe nichts in der Datei main.cpp geändert und in den Dateien Primes.h und Primes.cpp "num" in "int" geändert. (Ich habe auch gesehen, dass ich versehentlich zweimal gezählt habe, also habe ich eine neue Variable "evaluate" dafür gemacht). Aber es sagt mir immer noch, dass es für alle meine Variablen mehrere Definitionen gibt; und mit nur int als der formale Parameter, wie würde ich num Wert über das eigentliche Argument übergeben? Müsste ich dies in eine Klasse einfügen, da dies eine Mitgliedsvariable wäre? – Neel

Verwandte Themen