title: C++ - error: 'function' was not declared in this scope
body: <p>I have the following Problem:
  error: 'kleiner' was not declared in this scope
  My Professor told me, that my code just works fine for him.
  The directories are all included in bulid options (I am using Code::Blocks).
  Can someone please tell me what the problem might be?</p>
  
  <p><strong>main.cpp</strong></p>
  
  <pre><code>#include &lt;iostream&gt;
  #include "vector.h"
  using namespace std;
  
  int main(int argc, char *argv[])
  {
      Vector v1;
      cout &lt;&lt; "v1: " &lt;&lt; v1 &lt;&lt; endl;
  
      Vector v2(8);
      cout &lt;&lt; "v2: " &lt;&lt; v2 &lt;&lt; endl;
      cout &lt;&lt; "Minimum von v2: " &lt;&lt; v2.min() &lt;&lt; endl;
  
      Vector v3(v2);
      cout &lt;&lt; "v3: " &lt;&lt; v3 &lt;&lt; endl;
      cout &lt;&lt; "Anzahl von v3: " &lt;&lt; v3.getAnzahl() &lt;&lt; endl;
  
      if ( kleiner( v3[2], v2[5] ) )//&lt;&lt;--&lt;&lt;--&lt;&lt;-- HERE IS THE PROBLEM
          cout &lt;&lt; v3[2] &lt;&lt; " ist kleiner als " &lt;&lt; v2[5] &lt;&lt; endl;
  
      int arr[5] = { 10, 5, 2, 3, 12 };
  
      Vector v4;
      cout &lt;&lt; "v4: " &lt;&lt; v4 &lt;&lt; endl;
      v4.setVector( arr, 4 );
      cout &lt;&lt; "v4 nach set: " &lt;&lt; v4 &lt;&lt; endl;
      cout &lt;&lt; "Minimum von v4: " &lt;&lt; v4.min() &lt;&lt; endl;
      cout &lt;&lt; "Anzahl von v4: " &lt;&lt; v4.getAnzahl() &lt;&lt; endl;
  
      return 0;
  }
  </code></pre>
  
  <p><strong>vector.h</strong></p>
  
  <pre><code>#ifndef VECTOR_H
  #define VECTOR_H
  
  #include &lt;iostream&gt;
  using namespace std;
  
  class Vector
  {
        int* v;
        int anzahl;
  
  public:
         Vector(int anzahl = 10);
         Vector( const Vector&amp; vec ); // Kopierkonstruktor
         ~Vector();
         friend bool kleiner( const int&amp; a, const int&amp; b );
         int min() const;
         int getAnzahl() const;
         int operator[]( const int i ) const;
         void setVector( int* sv, int sanzahl);
         friend ostream&amp; operator&lt;&lt; ( ostream&amp; os, const Vector&amp; v );
  };
  
  #endif
  </code></pre>
  
  <p><strong>vector.cpp</strong></p>
  
  <pre><code>#include "vector.h"
  
  Vector::Vector( int a ) : anzahl(a)
  {
      v = new int[a];
      for ( int i = 0; i &lt; a; i++ )
          v[i] = i;
  }
  
  Vector::Vector( const Vector&amp; vec )
  {
      anzahl = vec.getAnzahl();
      v = new int[anzahl];
      for ( int i = 0; i &lt; anzahl; i++ )
          v[i] = vec[i];
  }
  
  Vector::~Vector()
  {
      delete[] v;
      v = NULL;
  }
  
  bool kleiner( const int&amp; a, const int&amp; b )
  {
       return ( a &lt; b );
  }
  
  int Vector::min() const
  {
       int min = v[0];
       for ( int i = 1; i &lt; anzahl; i++ )
       {
           if ( v[i] &lt; min )
               min = v[i];
       }
       return min;
  }
  
  int Vector::getAnzahl() const
  {
      return anzahl;
  }
  
  int Vector::operator[] ( const int i ) const
  {
      return v[i];
  }
  
  void Vector::setVector( int* sv, int sanzahl )
  {
       delete[] v; // alten Inhalt loeschen
       anzahl = sanzahl;
       v = new int[anzahl];
       for ( int i = 0; i &lt; anzahl; i++ )
       v[i] = sv[i];
       return;
  }
  
  ostream&amp; operator&lt;&lt; ( ostream&amp; os, const Vector&amp; v )
  {
       for ( int i = 0; i &lt; v.anzahl; i++ )
           os &lt;&lt; v[i] &lt;&lt; ", ";
       return os;
  }
  </code></pre>