如何从一个结构转换到另一个结构
How to convert from one struct to different struct?
我需要将一个结构体转换为另一个具有类似变量的结构体。我在一个有两个int型的结构体的例子上进行测试。
由于某些原因,它没有正确分配,我相信它正在发送一个本地副本,然后被释放?我做错了什么?
谢谢!
#include <iostream>
using namespace std;
struct a
{
int x, y;
a(){}
a(int _x, int _y)
{
x = _x;
y = _y;
}
};
struct b
{
int x, y;
b(){}
b(int _x, int _y)
{
x = _x;
y = _y;
}
b& operator=(const a& _a)
{
return b(_a.x, _a.y);
}
};
int main()
{
a a_test(1,2);
b b_test;
b_test = a_test;
std::cout << "a: " << a_test.x << "," << a_test.y << endl;
std::cout << "b: " << b_test.x << "," << b_test.y << endl;
return 0;
}
b& operator=(const a& _a)
{
return b(_a.x, _a.y);
}
您正在创建b的本地副本并返回对它的引用。该本地副本将在作用域结束时销毁。
你可能想做的:
b& operator=(const a& _a)
{
x = _a.x;
y = _a.y;
return *this;
}
赋值操作符的作用是将新值赋给现有对象。它是一个成员函数,所以它可以直接访问对象内部。因此,您可以更改它的成员,并返回对自身的引用,以允许进一步更改。
编辑以解决评论中如何为class a
做同样的问题:
你需要向前声明类b。你还需要在头文件和源文件之间分割声明和定义,因为当你编写定义时编译器需要知道class b
是什么样的。
在头
class b;
struct a
{
int x, y;
a(){}
a(int _x, int _y)
{
x = _x;
y = _y;
}
a& operator=(const b& _b);
};
在cpp a& a::operator=(const b& _b)
{
x = _b.x;
y = _b.y;
return *this;
}
相关文章:
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 静态结构和一个定义规则
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- 在学习数据结构之前对STL有一个了解是好的吗?
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何将数据从一个结构链接到另一个结构
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- std::transform 将一个结构数组复制到另一个结构数组
- C++:如何做一个链表,结构作为参数传递?
- 输入 ctrl + x 后如何再次 cin (cin<<x) 循环(cin 一个结构)
- 两个附带的类层次结构-一个好的设计模式