gpt4 book ai didi

C++ operator+ 的简单重载不编译

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:41 27 4
gpt4 key购买 nike

我有一个简单的 vector 类,我正在尝试重载 operator+ 以添加 vector 。当它在我的主程序中不起作用时,我创建了一个新项目并将其剥离到最低限度,但它仍然不起作用。

最低限度的代码:

主要.cpp

#include "vector3f.h"

int main()
{
Vector3f* a = new Vector3f();
Vector3f* b = new Vector3f();
Vector3f* c = a + b;
}

vector .h

#ifndef __VECTOR3F_H__
#define __VECTOR3F_H__

class Vector3f
{
public:
float x;
float y;
float z;

Vector3f();
Vector3f(float x, float y, float z);
~Vector3f();

Vector3f operator+(const Vector3f& rhs);
};

#endif

vector .cpp

#include "vector3f.h"

Vector3f::Vector3f()
{
x = 0;
y = 0;
z = 0;
}

Vector3f::Vector3f(float x, float y, float z)
{
this->x = x;
this->y = y;
this->z = z;
}

Vector3f::~Vector3f()
{

}

Vector3f Vector3f::operator+(const Vector3f& rhs)
{
return Vector3f(x + rhs.x, y + rhs.y, z + rhs.z);
}

这是编译错误:

main.cpp: In function 'int main()':
main.cpp:7: error: invalid operands of types 'Vector3f*' and 'Vector3f*' to binary 'operator+'

main.cpp 第 7 行是 Vector3f* c = a + b;

因此,正如 Stack Overflow 预期的那样,我的问题是:我做错了什么?

旁注:我的 IDE 非常糟糕,问题可能是编译器有问题,但我不希望出现这种情况。

感谢任何帮助。提前致谢!!

最佳答案

您动态分配了您的 Vectors,+ 运算符没有为指向 vectors 的指针定义。

所以你需要改变:

 Vector3f* a = new Vector3f();
Vector3f* b = new Vector3f();
//... assigning of and b
Vector3f* c = a + b;

Vector3f* a = new Vector3f();
Vector3f* b = new Vector3f();
Vector3f* c = new Vector3f();
*c = *a + *b;

关于C++ operator+ 的简单重载不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com