C++ C++;错误:';没有从[类名]到“类名”的适当转换;int"';
我正在学习多项式的加法、减法和乘法 我得到以下错误: '从[类名]到“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;
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
,而varc
是类Poly
的实例。
您需要返回一个int
编译器正在告诉您确切的问题。
加法方法声明为返回一个int
,而varc
是类Poly
的实例。
您需要返回一个int
编译器正在告诉您确切的问题。
加法方法声明为返回一个int
,而varc
是类Poly
的实例。
您需要返回一个int
编译器正在告诉您确切的问题。
加法方法声明为返回一个int
,而varc
是类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