Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;错误:';没有从[类名]到“类名”的适当转换;int"';_C++_Class - Fatal编程技术网

C++ C++;错误:';没有从[类名]到“类名”的适当转换;int"';

C++ C++;错误:';没有从[类名]到“类名”的适当转换;int"';,c++,class,C++,Class,我正在学习多项式的加法、减法和乘法 我得到以下错误: '从[类名]到“int”没有合适的转换函数' 在声明中: return c; (addition function) return deriv; 有人能就如何纠正这些错误提供指导吗 提前非常感谢, 瑞安 这是我的密码: #include "stdafx.h" #include <iostream> using namespace std; class Poly { private: // int ord;

我正在学习多项式的加法、减法和乘法

我得到以下错误:

'从[类名]到“int”没有合适的转换函数'

在声明中:

return c;    (addition function)

return deriv;
有人能就如何纠正这些错误提供指导吗

提前非常感谢, 瑞安

这是我的密码:

#include "stdafx.h"
#include <iostream>

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 < 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 < 100; i++)
        if (coeff[i] != 0) d = i;
        return d;
}

void print()
{
    int coeff[] = { 0 };

    for (int i = 99; i >= 0; i--)
    {
        if (coeff[i] != 0)
        {
            cout << coeff[i] << "x^" << i << " ";
        }
    }
}

int evaluate(int x)
{
    int p = 0;
    for (int i = ord; i >= 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 < 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 <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= 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 <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= 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 <= a.ord; i++)
    for (int j = 0; j <= 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 << "\n";

    d = c.differentiate().differentiate();

    d.print();

    cout << "\n";

    cout << c.evaluate(2);  // substitute x with 2
    cin.get();

    return 0;
}
#包括“stdafx.h”
#包括
使用名称空间std;
类聚
{
私人:
//int-ord;//多项式的阶
//整数系数[100];
公众:
int-ord;//多项式的阶
整数系数[100];
INTA、b、c;
Poly();//构造函数
int加法(int);//加2个多项式
int减法(int);//减去2个多项式
整数乘法(int);//乘以2个多项式
void evaluate(int);//使用Horner方法计算并返回在x处计算的多项式
int微分(int);//
void集(int,int);//mutator函数
int顺序();
void print();//打印结果
};
Poly::Poly()//默认构造函数
{
对于(int i=0;i<100;i++)
{
系数[i]=0;
}
}
void Poly::set(inta,intb)//mutator函数
{
//系数=新多边形[b+1];
系数[b]=a;
ord=订单();
}
int Poly::order()
{
int d=0;
对于(int i=0;i<100;i++)
如果(系数[i]!=0)d=i;
返回d;
}
作废打印()
{
int coeff[]={0};
对于(int i=99;i>=0;i--)
{
如果(系数[i]!=0)
{

编译器正在告诉你确切的问题。 加法方法声明为返回一个
int
,而var
c
是类
Poly
的实例。
您需要返回一个
int

编译器正在告诉您确切的问题。 加法方法声明为返回一个
int
,而var
c
是类
Poly
的实例。
您需要返回一个
int

编译器正在告诉您确切的问题。 加法方法声明为返回一个
int
,而var
c
是类
Poly
的实例。
您需要返回一个
int

编译器正在告诉您确切的问题。 加法方法声明为返回一个
int
,而var
c
是类
Poly
的实例。 您需要返回一个
int

您的(第一个)问题在此函数中:

int Poly::addition(Poly b)
{
    Poly a = *this;
    Poly c;

    for (int i = 0; i <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= b.ord; i++)
        c.coeff[i] += b.coeff[i];

    c.ord = c.order();

    return c;
}
但是您返回
c
,其中
c
是一个
Poly
。更改返回类型:

Poly Poly::addition(Poly b)
intpoly::differention(int)
也有同样的问题。 换成

Poly Poly::differentiate(int)
顺便说一句-为什么需要一个它忽略的
int

此外,
int Poly::multiply(Poly b)
不会返回任何现有的内容

您还有其他问题。例如,打印和求值函数应该是成员函数,使用std::vector存储系数可能更有意义

如果仔细查看,编译器可能会告诉您错误的行号。

您的(第一个)问题在于此函数:

int Poly::addition(Poly b)
{
    Poly a = *this;
    Poly c;

    for (int i = 0; i <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= b.ord; i++)
        c.coeff[i] += b.coeff[i];

    c.ord = c.order();

    return c;
}
但是您返回
c
,其中
c
是一个
Poly
。更改返回类型:

Poly Poly::addition(Poly b)
intpoly::differention(int)
也有同样的问题。 换成

Poly Poly::differentiate(int)
顺便说一句-为什么需要一个它忽略的
int

此外,
int Poly::multiply(Poly b)
不会返回任何现有的内容

您还有其他问题。例如,打印和求值函数应该是成员函数,使用std::vector存储系数可能更有意义

如果仔细查看,编译器可能会告诉您错误的行号。

您的(第一个)问题在于此函数:

int Poly::addition(Poly b)
{
    Poly a = *this;
    Poly c;

    for (int i = 0; i <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= b.ord; i++)
        c.coeff[i] += b.coeff[i];

    c.ord = c.order();

    return c;
}
但是您返回
c
,其中
c
是一个
Poly
。更改返回类型:

Poly Poly::addition(Poly b)
intpoly::differention(int)
也有同样的问题。 换成

Poly Poly::differentiate(int)
顺便说一句-为什么需要一个它忽略的
int

此外,
int Poly::multiply(Poly b)
不会返回任何现有的内容

您还有其他问题。例如,打印和求值函数应该是成员函数,使用std::vector存储系数可能更有意义

如果仔细查看,编译器可能会告诉您错误的行号。

您的(第一个)问题在于此函数:

int Poly::addition(Poly b)
{
    Poly a = *this;
    Poly c;

    for (int i = 0; i <= a.ord; i++)
        c.coeff[i] += a.coeff[i];
    for (int i = 0; i <= b.ord; i++)
        c.coeff[i] += b.coeff[i];

    c.ord = c.order();

    return c;
}
但是您返回
c
,其中
c
是一个
Poly
。更改返回类型:

Poly Poly::addition(Poly b)
intpoly::differention(int)
也有同样的问题。 换成

Poly Poly::differentiate(int)
顺便说一句-为什么需要一个它忽略的
int

此外,
int Poly::multiply(Poly b)
不会返回任何现有的内容

您还有其他问题。例如,打印和求值函数应该是成员函数,使用std::vector存储系数可能更有意义


如果仔细观察,编译器可能会告诉您错误的行号。

这与听起来一模一样。您不能将
Poly
隐式转换为
int
。对于这两个错误,您都试图从声明为返回
int
@Jashaszun的函数返回
Poly
-谢谢!但是,在哪里这是真的吗(我是C++的新手)?为什么有些操作返回
int
,而有些操作返回
Poly
?此外,类声明与成员函数定义完全不一致,例如
int addition(int);
int Poly::addition(Poly b