C++ -- 将元素添加到私有成员字段 std::vector
C++ -- Adding elements to private member field std::vector
class T {
private:
std::vector<T> myVec;
// ...
public:
T();
T(float x, float y);
std::vector<T> getMyVec() { return myVec; }
// ...
};
在 T 中.cpp我不以任何方式使用 myVec(也不在构造函数中)
在Tmain.cpp:
int main() {
T myT;
std::cout << myT.getMyVec().size() << std::endl; // 0
T anotherT(1.1, 2.2);
myT.getMyVec().push_back(anotherT);
std::cout << myT.getMyVec().size() << std::endl; // 0
}
希望我能说清楚(假设我的 #include 等是正确的):
所以基本上,我有一个类T,其中我有一个名为myVec的私有成员字段,其类型为std::vector。我还有一个公共(get-)函数来访问该字段。主要情况下,我为自己创建一个 T 对象,并打印出它的 myVec.size()。它是零,因为我还没有对向量做任何事情。我创建了另一个 T 对象并将其push_back() 到前一个 T 对象的向量字段中。我再次打印出前一个对象的 myVec.size()(我希望此时它是 1,因为我已经向其添加了另一个 T。但它仍然返回 0 作为其大小。为什么?我怎样才能让它"保存"我尝试添加到其中的对象?
std::vector<T> getMyVec() { return myVec; }
应该是
std::vector<T>& getMyVec() { return myVec; }
否则,您将返回会员的副本。
您需要返回对私有向量的引用。
std::vector<T>& getMyVec() { return myVec; }
否则它将返回副本。您对副本所做的任何更改都不会影响您在类中的向量。
相关文章:
- C++:用户定义的类,以成员字段作为地址
- 用于基于成员字段或函数创建比较器的快捷方式
- uninit_member:非静态类成员字段 m_cJobState.bstatus 未在此构造函数中初始化,也不在其调
- 派生类中的成员字段别名(无访问器功能)
- 如何使用 Clang 查找所有成员字段读/写?
- C 模板功能在任何集合成员字段上迭代
- 一次启用 MANY 类的成员字段,具体取决于模板<T>
- 如何在C++的专用模板类中访问模板类成员字段
- 动态链接到 c++ 静态成员字段时符号查找失败
- std :: async在成员字段的成员功能上
- C++使用成员字段设置比较器
- C++11 是否重新初始化初始化的成员字段
- 将控件作为成员字段传递给使用新 connect() 调用的方法
- 构造以shared_ptr作为成员字段的类的正确语法是什么
- 成员字段的 getter 的常用做法是什么?
- c++:对于多重继承类的子类中的重复成员字段,什么是好的重构
- C++ -- 将元素添加到私有成员字段 std::vector
- 重写派生类中的成员字段
- 在C++类中使用指针作为成员字段是不是很傻
- 模板继承成员字段