c++错误:'从[类名]到"int"& # 39;
C++ error: 'No suitable conversion from [class name] to "int" '
我正在学习多项式的加法、减法和乘法。
我得到以下错误:
'没有合适的从[类名]到"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;
}
你的(第一个)问题是在这个函数中:
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;
}
你说你将返回一个int:
int Poly::addition(Poly b)
//^------ promise to return int
但是返回c
,其中c
是Poly
。更改返回类型:
Poly Poly::addition(Poly b)
int Poly::differentiate(int)
也有同样的问题。改为
Poly Poly::differentiate(int)
BTW -为什么这需要一个int
,它忽略了?
此外,int Poly::multiplication(Poly b)
不返回任何东西。
你有更多的问题。例如,print和evaluate函数应该是成员函数,使用std::vector来存储系数可能更有意义。
如果你仔细观察,编译器可能会告诉你错误的行号
编译器正在告诉您确切的问题。你的加法方法被声明为返回int
,而你的var c
是Poly
类的实例。您需要返回一个int
。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- 为什么我无法更改"set<set>"循环中的值<int>
- 长 长 int 不要 长 int 好
- C++程序在循环后给出奇怪的int值
- 如何计算数据类型的范围,例如int
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)