2016-12-09 5 views
0

main.cppに名前空間::関数は関数として使用することはできません

#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); 
        } 
       } 
      } 
     }  
    } 
} 

私は、次の3つのエラーが発生します: Errors from terminal

私は時間を費やしました。 r日であり、まだエラーを修正するように見えることはできません。 私はexternと私が想像することができるほとんどすべてを使ってみました。ここで

答えて

0

は、関数宣言でのエラーです:

int checkPrimeness(num); 

NUMで初期化されたグローバル整数変数checkPrimenessを定義します!関数を宣言するには、次のように変更してください。

int checkPrimeness(int); 

パラメータを外部変数として宣言する理由を理解できません。宣言と実現を分割するには、ヘッダファイル内のすべての関数とクラスを宣言し、ソースファイル内でそれらを定義する必要があります。

+0

ありがとうございます!私はまだいくつかのエラーがありますが、私はmain.cppで何も変更せず、 "num"を "int"にPrimes.hとPrimes.cppファイルの両方で変更しました。 (私は誤ってカウントを2回使用していたので、新しい「評価」変数を作成しました)。しかし、私の変数すべてに複数の定義があることはまだ分かっています。正式なパラメータとしてintを使用するだけで、numの値を実際の引数でどのように渡すことができますか?これをメンバー変数にすると、これをクラスに入れる必要がありますか? – Neel

関連する問題