2017-05-15 19 views
-2

私は、次のエラーが含ま++コードこのCを持っている:1。readBinaryFileはこのスコープで宣言されていなかった

2. retはこのスコープで宣言されていなかった
3.このスコープではrecursiveBinarySearchは宣言されていません。
なぜ私はこのエラーを取得しています:このスコープで宣言されていない

これらのエラーがなぜ発生しているのか理解してもらえますか?

ありがとうございます。あなたの.cppファイルで

BinarySearch.h

#ifndef BINARYSEARCH_H 
    #define BINARYSEARCH_H 

    using namespace std; 

    class BinarySearch 
    { 

     public: 
      char readBinaryFile(char *fileName); 
      int recursiveBinarySearch(int start_index, int end_index, int  targetValue); 
    }; 

    #endif 

BinarySearch.cpp

#include<iostream> 
    #include<fstream> 
    #include<cstdlib> 
    #include<vector> 
    using namespace std; 

    //vector to dynamically store large number of values... 
    vector<unsigned int> ret; 

    //variable to count the number of comparisions... 
    int n=0; 
    //method to read file.... 
    void readBinaryFile(char* fileName) 
    { 
     ifstream read(fileName); 
     unsigned int current; 
     if(read!=NULL) 
     while (read>>current) { 
      ret.push_back(current); 
     } 

    } 

    //recursive binary search method 

    void recursiveBinarySearch(int start_index, int end_index, int targetValue) 
    { 

     int mid = (start_index+end_index)/2; 

     if(start_index>end_index) 
     { 
      cout<<n<<":-"<<endl; 
      return ; 
     } 

     if(ret.at(mid)==targetValue) 
     { 
      n++; 
      cout<<n<<":"<<mid<<endl; 
      return ; 
     } 
     else if(ret.at(mid)<targetValue) 
     { 
      n=n+2;//upto here two comparisions have been made..so adding two 
      start_index=mid+1; 
      return recursiveBinarySearch(start_index,end_index,targetValue) ; 
     } 
     else 
     { 
      n=n+2; 
      end_index=mid-1; 
      return recursiveBinarySearch(start_index,end_index,targetValue) ; 
     } 
    } 

BinarySearch_test.cpp

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

    int main() 
    { 

     char a[] ="dataarray.bin"; 
     //assuming that all integers in file are already in sorted order 
     readBinaryFile(a); 

     int targetValue; 
     cout<<"Enter a Value to search:"; 
     cin>>targetValue; 

     recursiveBinarySearch(0,ret.size()-1,targetValue) ; 


     return 0; 

    } 
+1

binarySearch.cppには.hファイルが含まれていません – AndyG

+4

ようこそ!あなたは[良いC + +の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を使用することができるように聞こえます – NathanOliver

+0

@AndyG私はここにコードにそれを含めませんでした事故によって元のコードにはそれがあります。 –

答えて

0

あなたはBinarySearch::のために、あなたの関数を定義するクラス名を欠場

void BinarySearch::readBinaryFile(char* fileName) 
{ 
    //code here 
} 

これらのメソッドは静的ではないため、これらのメソッドを呼び出すにはオブジェクトが必要です。

BinarySearch x; 
x.readBinary(...); 
+0

多分私はすべてのコメントを読んでいたはずです - 答えはすでに与えられていました。ほとんどの人が "本当の"答えの代わりにコメントで答える理由はありますか? – florgeng

関連する問題