通过引用另一个类方法传递向量成员变量
passing a vector member variable by reference to another class method
注意:我在问题中使用伪代码
比方说,我有一个名为circle的类,它的接口名为圆形.h我还有一个名为readdata的方法,但它是在另一个中定义的类称为矩形(矩形.h是接口)我想调用circle类中的方法readdata,并传入私有成员变量,它是一个向量。如何做到这一点?是吗更正为通过引用传入PRIVATE成员变量去另一个班。这不是违背了拥有私有成员变量,因为现在我给类矩形访问circle类向量变量,因为我通过引用传入了它。以下是我的感受do-it(伪码)
circle.h
private:
vector<struct> vect;
public:
dataread()
circle.cpp
rectangle.h
readdata(vector &)
method dataread() //class method to fill up my struct
{
rectangle::readdata(vect); //i call rectangle readdata method but i
pass in a reference to my memebr variable....is this safe?
}
我应该只在本地声明向量吗(在dataread方法中)将其分配给引用?任何帮助都将不胜感激。现在它正在编译,但我被告知这不好编程实践
将对私有成员的引用传递给其他类中的方法没有错。例如:
void myClass::myMethod() {
std::copy(myVector1.begin(), myVector1.end(), myVector2.begin());
}
虽然这并没有直接传递对myVector1的引用,但它确实传递了一个可写迭代器,这几乎是一样的。该类正在请求某个对象/函数对其数据执行某些操作。只要其他对象/函数只做它应该做的事情,就没有问题。
我想我明白你的要求了。是的,你可以传递对私有数据的引用,而不是,你不应该这样做。你可以传递一个const引用,这样它就不会被修改,或者传递一个复制了内容的新向量。最好的办法是弄清楚为什么你需要这样做,然后找出获得数据的最佳方法。
传递指向"专用内存区域"的指针并不一定违反封装思想,因为拥有该内存区域的对象决定允许访问谁。它不允许"任何人访问它"。另一方面,这看起来不太自然。
您应该从readdata方法返回一个指针,并在您的circle实例中使用它。同时,这样做打破了我个人使用的一个原则:分配内存的人对内存负责,所以它也应该是在适当的时候释放内存的人。考虑到这一点,返回实际向量而不是指向它的指针可能是个好主意(但这意味着复制大量内存,以防您没有使用带有"返回值优化"的编译器)。
- 向量成员在管理类指针C++队列时丢失
- C++:更新类的向量成员变量
- C++ 入门 12.1:我可以在类中使用静态向量成员实现 StrBlob<string> 吗?
- 具有向量成员的基类<int>
- C++ 向量::使用类对象迭代器擦除不擦除向量成员
- 无法将类构造函数中新创建的对象复制到 C++ 中的向量成员
- 修改另一个类的向量成员时出错
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 如何在 C++ 中将结构类型向量数据输入到结构向量成员(嵌套结构向量)中
- std::向量成员变量 EXC_BAD_ACCESS
- 如何使用其定义附近的显式长度/值构造函数初始化向量成员变量
- "Empty"数组\向量成员 C++
- 如何使用初始值设定项列表初始化 2D 向量成员
- 如何在类定义中初始化向量成员变量
- 如何初始化结构的向量成员
- 使用向量<向量>成员实例化对象时的隔离错误<int>
- 为向量成员和更新元素指定默认值
- 保持类的向量成员与类实例连续
- C++:在类构造函数中填充向量后,向量成员被销毁
- 通过引用另一个类方法传递向量成员变量