C++ 将一个对象的值复制到另一个对象中
C++ Copy values of one object into another object
我有
Class A
{
A(bool t1, bool t2, bool t3......................bool tn );
}
和
Class B
{
B(bool t1, bool t2, bool t3.......................bool tn);
}
两个类的结构相同,我想从A类中提取所有布尔值obj1
并将其传递给B类obj2
。
如果我从obj1
中获取每个布尔变量的值并将其传递给obj2
......这将使代码非常巨大。
我用reinterpret_cast来解决这个问题,但是我收到了c ++ lint警告826 http://stellar.cleanscape.net/products/cpp/checks.html。
您可以为类 b 创建一个将类 a 作为参数的构造函数,在构造函数中您将执行赋值。或者你可以重载 = 运算符。最终,您可以执行以下操作:
class b = class a;
如果采用重载 = 运算符的路线。
您可以在此处阅读有关复制构造函数和运算符 = 的信息:http://www.learncpp.com/cpp-tutorial/911-the-copy-constructor-and-overloading-the-assignment-operator/
请注意,如果您选择 = 运算符路由,请务必阅读文章,因为它需要一些时间来适应。
传递一个 std::vector 作为参数,保存从 1 到 n 的布尔值。为什么即使你有这么多的单变量而不是一个向量?
做
B(bool t1, bool t2, bool t3.......................bool tn);
自
B(std::vector<bool>& booleanValues);
将布尔值传递给 A,以便获得以下代码:
B(std::vector<bool>& booleanValues)
{
A(booleanValues);
}
好吧,真正的问题是天气类是相同的,具有相同的结构,具有相同的部分,或者其中一个是另一种类型。
- 同一类:仅使用 1 个类并根据需要创建尽可能多的实例 相同的结构
- :如果它们具有相同的结构但不同的方法,您可以创建父类或保持原样,CUS 的相同结构不一定表示相同的含义。
- 是相同的,或者其中之一是另一种:这可能说继承。 您需要根据逻辑决定哪些部分应该进入父类,并且父类应该是抽象的,或者 i B 的父类,反之亦然,或者两者都是一个新的父类
您可以复制构造函数(以及转换构造函数)和运算符=,如另一个答案中所述,并将所有布尔值放在数组中,如另一个答案中所述。如果需要或希望布尔值具有离散变量名称,则可以将它们放在结构中并使用该结构传递值。此代码只是使用 Get() 和 Set() 传递结构: 如果你做一个复制构造函数和运算符=,结构不是必需的,因为大型赋值代码隐藏在成员函数中,并且在从一个对象传递到另一个对象时看不到。但是,如果不同类型的对象始终包含相同的布尔值集,并且布尔值都以某种方式相关,则最好保留它。
#include <iostream>
using namespace std;
struct States {
bool left;
bool right;
bool up;
bool down;
};
class A {
States states;
public:
A (bool left, bool right, bool up, bool down) : states {left,right,up,down} {}
void Print(void) {
cout << states.left << ',' << states.right << ',' << states.up << ',' << states.down << endl;
}
void Set(const States &states) { this->states = states; }
const States &Get(void) { return states; }
};
class B {
States states;
public:
B (bool left, bool right, bool up, bool down) : states {left,right,up,down} {}
void Set(const States &states) { this->states = states; }
const States &Get(void) { return states; }
void Print(void) {
cout << states.left << ',' << states.right << ',' << states.up << ',' << states.down << endl;
}
};
int main()
{
A a(true,false,true,false);
a.Print();
B b(true,true,true,true);
b.Print();
b.Set( a.Get() );
b.Print();
B bb(false,false,false,false);
a.Set( bb.Get() );
a.Print();
}
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 如何使用函数将一个对象的输入复制到另一个对象中
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 复制赋值函数如何访问另一个对象的私有成员(Stroustroup 原则和实践书)?
- 复制一个对象并使两者共享一个成员变量 (C++)
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 为什么当我添加一个不同的对象(复制构造函数中的参数)时调用复制构造函数?
- 如何在C++中将一个对象从一个向量复制到另一个向量?
- 将一个 OpenCV OutputArrayOfArrays 对象复制到另一个对象
- 为什么在 C++ 中,当对象包含在另一个对象中时,复制构造函数被调用两次
- C :将一个对象复制到构造函数中的另一个对象
- std::vector::push_back一个不可复制的对象会导致编译器错误
- 如何将一个类的对象复制到另一个类中
- 当我们把指针从一个对象复制到同一类的另一个对象时,我们到底想要什么
- 为什么在 const 对象上调用 std::move 在传递给另一个对象时会调用复制构造函数
- 如何将一个 ostringstream 对象复制到另一个对象中(使用 gcc-4.7.0)
- C++ 将一个对象的值复制到另一个对象中
- 将对象及其数据成员复制到另一个对象
- 将一个对象数据复制到另一个相同类型 C++ 的对象
- 如何按值返回一个不可复制的、可移动的对象作为const并存储它