title: What does 'must have an argument of class or enumerated type' actually mean
body: <p>I have a header file and a .cpp file. I an needing to write functions for my .h file but i get an error before i can fully complete a skeleton .cpp file.</p>
  
  <p>Money.h</p>
  
  <pre><code>#ifndef MONEY_H
  #define MONEY_H
  
  #include &lt;iostream&gt;
  #include &lt;iomanip&gt;
  
  using namespace std;
  
  class Money
  {
  public:
     Money(int dollars, int cents);
     Money operator+(const Money&amp; b) const;
     Money operator-(const Money&amp; b) const;
     Money operator*(double m) const;
     Money operator/(double d) const;
  
     void print() const;
  
  private:
     int dollars;
     int cents;
  };
  
  #endif
  </code></pre>
  
  <p>Money.cpp</p>
  
  <pre><code>#include "Money.h"
  
  Money::Money(int dollars, int cents){
  
  }
  Money operator+(const Money&amp; b) {
  
  }
  Money operator-(const Money&amp; b) {
  
  }
  Money operator*(double m) {
  
  }
  Money operator/(double d) {
  
  }
  
  void print(){
  
  }
  </code></pre>
  
  <p>The errors are with the multiply and divide operators:</p>
  
  <blockquote>
    <p>Money.cpp:12:25: error: 'Money operator*(double)' must have an
    argument of class or enumerated type</p>
    
    <p>Money.cpp:15:25: error: 'Money operator/(double)' must have an
    argument of class or enumerated type</p>
  </blockquote>