2017-05-15 98 views
-2

我有本C,包含下面的錯誤++代碼:
1. readBinaryFile並沒有在這個範圍內聲明
2. ret沒有在這個範圍內聲明
3. recursiveBinarySearch未在此範圍內聲明。
爲什麼我收到此錯誤:在此範圍內聲明

是否有人可以幫助我瞭解爲什麼這些錯誤都上來了?

預先感謝您。

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

在您的.cpp文件,你錯過的類名來定義BinarySearch::的功能

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

和上面提到的,由於方法不是靜態的,你需要一個對象來調用它們。

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

也許我應該閱讀所有的評論 - 答案已經給出。爲什麼大多數人回答評論而不是「真實」的答案是有原因的,這樣問題也可以被標記爲回答! – florgeng