C++ 错误:调用'(Vector3 (double, double, double)'不匹配
C++ Error: no match for call to '(Vector3 (double, double, double)'
所以我遇到了这个错误,无法继续我的任务
这是代码:
#include "std_lib_facilities.h"
class Vector3
{
public:
Vector3();
Vector3(double x1);
Vector3(double x1, double y1);
Vector3(double x1, double y1, double z1);
//Helper functions
double x() {return x1;}
double y() {return y1;}
double z() {return z1;}
private:
double x1,y1,z1;
};
/** Constructor Definitions **/
Vector3::Vector3(double x, double y, double z){
x1=x;
y1=y;
z1=z;
}
Vector3::Vector3(double x, double y){
x1=x;
y1=y;
}
Vector3::Vector3(double x){
x1=x;
}
Vector3::Vector3()
{
x1=0;
y1=0;
z1=0;
}
/** Operator Overloading **/
ostream& operator<<(ostream&os, Vector3& v) //<< Overloading
{
return os <<"["<<v.x()
<<", "<<v.y()
<<", "<<v.z()
<<"]"<<endl;
}
Vector3 operator+(Vector3 v1, Vector3 v2) //+ Overloading
{
double a,b,c;
Vector3 vector1(a,b,c);
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
}
这是一个头文件。错误发生在返回行的//+重载(代码的最后一位)处
我在谷歌上搜索了一下,但没有结果。大多数人建议我使用一个与其他东西同名的函数或变量,但我找不到这样的东西。
Vector3 vector1(a,b,c);
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
首先,使用未初始化的变量构建一个Vector3
对象。然后您将尝试调用该对象上的调用运算符(operator()
)。您的operator+
函数可能看起来像这样:
Vector3 operator+(Vector3 v1, Vector3 v2) //+ Overloading
{
return Vector3( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
}
您的问题在这一行:
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
你认为这个表达会做什么?看起来您将vector1
变量视为函数名。这就是你想要做的吗?
如果您试图构造一个类型为Vector3
的新对象,那么您可能需要在某个时刻使用类型名Vector3
。
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 为什么我的数组值与此处的全局变量不匹配?
- 引号之间匹配/不匹配,带有不可避免的引号和多行
- test1.cpp:9:77:错误:对"(const std::normal_distribution) <double>(std::mt19937&)"的调用不匹配
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- C++ 错误:调用'(Vector3 (double, double, double)'不匹配