gpt4 book ai didi

C++:从函数返回类对象

转载 作者:行者123 更新时间:2023-11-27 22:51:16 28 4
gpt4 key购买 nike

<分区>

我在 Stackoverlow 上读过一些文章,比如 How to “return an object” in C++?关于这个问题,但我的问题仍然存在。

我的程序实现了一个 vector 类(数学中的 vector )。我想重载运算符 +,我尝试修改函数中的空对象或使用静态成员,结果在我对下面这些代码的评论中。

这是我的代码:

#include <iostream>

class Vector {
double * arr;
unsigned short dim;

public:
Vector(const int& d = 0); // This constructor initialize memory for its member

Vector& operator = (const Vector& v);

/* This function must return a Vector object
*
* Example: Vector v = v1 + v2; // v1.arr = {1, 1, 3}, v2.arr = {1, 0, 1}
*
* Then v.arr = {2, 1, 4} // this is just an example

* When I run it by using empty class like:
* Vector operator + (const Vector& v) const {
* Vector vec();
* // Do something with vec;
* return vec;
* }
* It returns a garbage value.
*
* When I run the code below, the GNU compiler inform:
* C:\Desktop>g++ -Wall -ansi -c Vector.cpp
* C:\Desktop>g++ -Wall -ansi -o main.exe main.cpp vector.o
* vector.o:Vector.cpp:(.text+0x33e): undefined reference to `Vector::_vec'
*/

Vector operator + (const Vector& v) const {

if (dim == v.dim) {
_vec = Vector(dim);

for (int i = 0; i < dim; ++i) {
_vec.arr[i] = arr[i] + v.arr[i];
}

return _vec;
}

return Vector(0);
}

~Vector();

private:
static Vector _vec;
};

任何人需要它的主要功能:

#include <iostream>
#include "Vector.h"

using namespace std;

int main(int argc, char const *argv[]) {
Vector v(-2), v3;
Vector v2(2);

cout << "Input vector: ";
cin >> v;
cout << v << endl;
cout << "Input vector: ";
cin >> v2;
cout << v2 << endl;

v3 = v + v2;
cout << v3;

return 0;
}

感谢阅读。

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