跨多个函数访问类指针
Accessing class pointers across several functions
我遇到了一个问题,我一直在努力提高代码的效率。我已经创建了一个Vector类,需要用它做一些基本的计算。使用向量库是不可能的,我需要创建自己的向量库。我现在的问题是数学的最后阶段。我可以输入第一个和第二个向量的值,但将它们相加后,我得到的是完全随机的数字。我正在发布我的头文件和我的cpp文件-任何帮助都将不胜感激!!
Vectors.h
#include <math.h>
#include <iostream>
class Vectors
{
public:
Vectors(void);
~Vectors(void);
Vectors(double a1, double b1, double c1, double d1)
{
a = a1;
b = b1;
c = c1;
d = d1;
}
void VectorAdd(Vectors vector1, Vectors vector2);
void VectorSub();
void VectorMulti();
void VectorDiv();
void VectorDP();
void VectorCP();
void setV1(Vectors &vector1);
void setV2(Vectors &vector2);
private:
double a;
double b;
double c;
double d;
double cp;
};
Cpp文件
void Vectors::setV1(Vectors &vector1)
{
Vectors *Vector1 = new Vectors();
std::cout << "Enter the values of the first vector please.n";
std::cout << "a1: ";
std::cin >> Vector1 -> a;
std::cout << "b1: ";
std::cin >> Vector1 -> b;
std::cout << "c1: ";
std::cin >> Vector1 -> c;
std::cout << "d1: ";
std::cin >> Vector1 -> d;
Vector1 = &vector1;
std::cin.get();
std::cin.get();
}
void Vectors::setV2(Vectors &vector2)
{
Vectors *Vector2 = new Vectors();
std::cout << "Enter the values of the first vector please.n";
std::cout << "a1: ";
std::cin >> Vector2 -> a;
std::cout << "b1: ";
std::cin >> Vector2 -> b;
std::cout << "c1: ";
std::cin >> Vector2 -> c;
std::cout << "d1: ";
std::cin >> Vector2 -> d;
Vector2 = &vector2;
std::cin.get();
std::cin.get();
}
void Vectors::VectorAdd(Vectors vector1, Vectors vector2)
{
setV1(vector1);
setV2(vector2);
Vectors *Vector3 = new Vectors();
std::cout << "Here is the combination of the two vectors.n";
Vector3 -> a = vector1.a + vector2.a;
std::cout << "a3: " << Vector3 -> a;
Vector3 -> b = vector1.b + vector2.b;
std::cout << "nb3: " << Vector3 -> b;
Vector3 -> c = vector1.c + vector2.c;
std::cout << "nc3: " << Vector3 -> c;
Vector3 -> d = vector1.d + vector2.d;
std::cout << "nd3: " << Vector3 -> d;
std::cin.get();
std::cin.get();
}
提前谢谢!
Vector2 = &vector2;
你倒过来了。您已经用一个指向完全未初始化对象的指针覆盖了刚刚初始化的新对象的指针,该指针是您在这里传递的。当然,随机数据在未初始化的对象中。
你不需要
Vectors *Vector2 = new Vectors();
首先。只需直接从std::cin
初始化vector2
参数。其他函数setV1()也是如此。同样的事情。
我认为这里的问题是,您混淆了pointer&参考
在void Vectors::setV1(Vectors &vector1)
中,您将获得vector1
作为参考。接下来,您将创建一个全新的对象Vectors *Vector1 = new Vectors();
。然后继续填充*Vector1
。到目前为止,我没有看到任何奇怪的事情。然而,Vector1 = &vector1;
这一部分完全破坏了程序。您现在正在重新分配指针Vector1
,其传入地址为vector1
。
除非您在内存上有vector1
所指出的一些值,否则您将不会得到正确的结果。假设你很幸运,正如你没有说的那样,你的程序生成了SIGSEGV:)
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用指针访问数组中的对象数据成员
- 无法通过指针访问对象的成员
- decltype:使用指针访问类的静态成员
- 是否可以使用指针访问变量以避免直接编辑变量?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++继承从基类指针访问派生类中的非虚拟函数
- 如何使用指针访问成对向量的元素
- 为什么有些库提供无指针访问,而另一些库则不提供
- 如何通过引用或指针访问二维矢量
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 复制堆栈上的成员值或使用指针访问它?
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 从指针访问 Kaguya Lua 状态
- 说明通过指针访问非静态类成员函数
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?