title: C++ error: 'No suitable conversion from [class name] to "int" '
body: <p>I'm working on a class for the addition, subtraction and multiplication of polynomials.  </p>
  
  <p>I'm getting the following errors:</p>
  
  <p>'No suitable conversion function from [class name] to "int" '</p>
  
  <p>in statements:</p>
  
  <pre><code>return c;    (addition function)
  
  return deriv;
  </code></pre>
  
  <p>Can anyone offer any guidance on how to correct these?</p>
  
  <p>Thanks very much in advance,
  Ryan</p>
  
  <p>Here is my code:</p>
  
  <pre><code>#include "stdafx.h"
  #include &lt;iostream&gt;
  
  using namespace std;
  
  class Poly
  {
  private:
  
  //  int ord;                            // the order of the polynomial
  //  int coeff[100];
  
  public:
  
      int ord;                            // the order of the polynomial
      int coeff[100];
  
  
      int a, b, c;
      Poly();                             // constructor
      int addition(int);                  // adds 2 polynomials
      int subtraction(int);               // subtracts 2 polynomials
      int multiplication(int);            // multiplies 2 polynomials
      void evaluate(int);                 // uses Horner's method to compute and return the polynomial evaluated at x
      int differentiate(int);         // 
      void set(int, int);                 // mutator function
      int order();
      void print();                       // prints the results
  };
  
  Poly::Poly()            // the default constructor
  {
      for (int i = 0; i &lt; 100; i++)
      {
          coeff[i] = 0;
      }
  }
  
  void Poly::set(int a, int b)    // mutator function
  {
      // coeff = new Poly[b + 1];
      coeff[b] = a;
      ord = order();
  }
  
  int Poly::order()
  {
      int d = 0;
      for (int i = 0; i &lt; 100; i++)
          if (coeff[i] != 0) d = i;
          return d;
  }
  
  void print()
  {
      int coeff[] = { 0 };
  
      for (int i = 99; i &gt;= 0; i--)
      {
          if (coeff[i] != 0)
          {
              cout &lt;&lt; coeff[i] &lt;&lt; "x^" &lt;&lt; i &lt;&lt; " ";
          }
      }
  }
  
  int evaluate(int x)
  {
      int p = 0;
      for (int i = ord; i &gt;= 0; i--)
          p = coeff[i] + (x * p);
      return p;
  }
  
  int Poly::differentiate(int)
  {
      if (ord == 0)
      {
          Poly t;
          t.set(0, 0);
          return t;
      }
  
      Poly deriv;
      deriv.ord = ord - 1;
  
      for (int i = 0; i &lt; ord; i++)
          deriv.coeff[i] = (i + 1) * coeff[i + 1];
      return deriv;
  }
  
  int Poly::addition(Poly b)
  {
      Poly a = *this;
      Poly c;
  
      for (int i = 0; i &lt;= a.ord; i++)
          c.coeff[i] += a.coeff[i];
      for (int i = 0; i &lt;= b.ord; i++)
          c.coeff[i] += b.coeff[i];
  
      c.ord = c.order();
  
      return c;
  }
  
  Poly subtraction(Poly b)
  {
      Poly a = *this;
      Poly c;
  
      for (int i = 0; i &lt;= a.ord; i++)
          c.coeff[i] += a.coeff[i];
      for (int i = 0; i &lt;= b.ord; i++)
          c.coeff[i] -= b.coeff[i];
  
      c.ord = c.order();
  
      return c;
  }
  
  int Poly::multiplication(Poly b)
  {
      Poly a = *this;
      Poly c;
  
      for (int i = 0; i &lt;= a.ord; i++)
      for (int j = 0; j &lt;= b.ord; j++)
          c.coeff[i + j] += (a.coeff[i] * b.coeff[j]);
      c.order = c.order();
  }
  
  int main()
  {
      Poly a, b, c, d;
      a.set(7, 4);                //  7x^4
      a.set(1, 2);                //   x^2
  
      b.set(6, 3);                //   6x^3
      b.set(-3, 2);               //  -3x^2
  
      c = a.subtraction(b);       // (7x^4 + x^2) - (6x^3 - 3x^2)
  
      c.print();
  
      cout &lt;&lt; "\n";
  
      d = c.differentiate().differentiate();
  
      d.print();
  
      cout &lt;&lt; "\n";
  
      cout &lt;&lt; c.evaluate(2);  // substitute x with 2
      cin.get();
  
      return 0;
  }
  </code></pre>