错误:无法将参数"1"的"float*"转换为"float"
Error: Cannot convert 'float*' to 'float' for argument '1'
我有一个项目来编写一个对矩阵执行数学运算的代码。用户以字符串的形式输入一个矩阵,然后输入一个运算符,如果它是 + 或 - 或 * 或/那么用户必须输入另一个矩阵......所以我想创建一个执行每个操作的函数,我从 ADD 函数开始,但是当我在 main 中调用它时出现错误。输入矩阵示例:[3 4 9;2 5 8;1 2 50]注意:不应打印出多余的空格或分号。
#include <iostream>
#include <string>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
string ADD (float matrix1,float matrix2,int arraySize);
int main()
{
string s1; //first matrix
char op; //operator
string s2;//second matrix
int y; //for power operation
int n = 0; //number of rows of first matrix
int m = 0; //number of columns of first matrix
int o = 0; //number of rows of second matrix
int p = 0;//number of columns of second matrix
getline(cin, s1);
for (int i = 0; i < s1.size(); i++)
{
if (s1[i] == ';') n++;
}
for (int j = 0; j < s1.size(); j++)
{
if (s1[j] == ' ') m++;
}
n = n+1;
m = (m/n)+1;
s1.erase(0, 1); //to remove first bracket
for (int z = 0; z < s1.size(); z++) //to replace characters with a space
{
if (s1[z] == ';' || s1[z] == ']') s1[z] = ' ';
}
string token1;
float matrix1 [n*m];
for (int x = 0; x < n*m; x++)
{
token1 = s1.substr(0, s1.find(" "));
float v = atof(token1.c_str());
matrix1 [x] = v;
s1.erase(0, s1.find(" ")+1);
}
cout <<"Please Enter An Operator From The Following List: '+ - * ^ T D I /'" <<endl;
cin >> op;
if (op == '+' || op == '-' || op == '*' || op == '/')
{
cin.ignore(); getline (cin,s2);
}
else if (op == '^') cin >> y;
for (int f = 0; f < s2.size(); f++)
{
if (s2[f] == ';') o++;
}
for (int q = 0; q < s2.size(); q++)
{
if (s2[q] == ' ') p++;
}
o = o+1;
p = (p/o)+1;
s2.erase(0, 1); //to remove first bracket
for (int e = 0; e < s2.size(); e++) //to replace characters with a space
{
if (s2[e] == ';' || s2[e] == ']') s2[e] = ' ';
}
string token2;
float matrix2 [o*p];
float h;
for (int c = 0; c <o*p; c++)
{
token2 = s2.substr(0, s2.find(" "));
h = atof(token2.c_str());
matrix2 [c] = h;
s2.erase(0, s2.find(" ")+1);
}
if ( n == o && m == p && op == '+')
{
ADD(matrix1,matrix2,m*n) //Where I got the error Cannot convert 'float*' to 'float' for argument '1'
}
return 0;
}
string ADD (float matrix1[],float matrix2[],int arraySize)
{
string str;
for (int u = 0; u < arraySize; u++)
{
float matrix3[arraySize];
matrix3[u] = matrix1[u] + matrix2[u];
ostringstream ss;
ss << matrix3;
str = ss.str();
return str;
}
cout <<str;
}
您的前向声明与您的函数定义不匹配:
string ADD (float matrix1,float matrix2,int arraySize);
和
string ADD (float matrix1[],float matrix2[],int arraySize)
{
...
}
只需更改您的前向声明以匹配定义。
相关文章:
- 没有合适的构造函数可以从"float"转换为"_D3DCOLORVALUE"
- 错误:无法将"float*"转换为"float"
- 有没有一种优雅的方法可以将矢量<复杂<float>>转换为矢量<short>?
- MBED RTOS将Float转换为字符串/字符阵列
- 错误:无法将参数"1"的"float*"转换为"float"
- 有没有快速的方法可以将std::vector<std::vector<float>>转换为std::vector<float2>?
- 将 const float* 转换为 std::array<float, ...>
- 当float转换为int时,此代码中是如何/为什么进行缩小的
- Arduino 无法在初始化时将'float'转换为'const char*'
- C++11自动.从float转换为long
- g++ 在不使用 -Wconvert 的情况下将 double/float 转换为无符号整数时发出警告
- 从 std::vector<std::vector<float>> 转换为 float**
- 在opencv中将垫子转换为矢量<float>和矢量<float>转换为垫子
- 代码一直说:“[错误]无法将参数'1'的'float*'转换为'float'到'void test(flo
- 从'float'转换为'LONG'需要缩小转换范围
- 错误:初始化时无法将'float*'转换为"qreal* {aka double*}"
- Int16_t到float转换的奇怪
- 使用JNI将float*转换为jfloatArray
- 将google::p rotobuf::RepeatedField<float>转换为浮动
- 将float转换为int时的奇怪行为