你在问两个不相关的问题。请不要在一篇文章中这样做。一篇文章 - 一个问题。这使得回答变得非常容易。
第二:
有没有办法强制 std::vector,而不是在对象被推回时复制对象?
已经被别人回答了。
第一的:
我创建了一个 std::vector 测试;并在循环中创建了 Table 对象并将它们推回测试向量。问题是我在表内的行内丢失了表*。我需要指针,所以当我遍历我的行时,我知道它们属于哪个表。
很可能您的 ROW 不包含对包含它的表的任何反向引用。这样,当您传递行向量或行本身时,您会丢失有关谁拥有它的信息。您必须将 a-vector-of-rows 与 一起传递table* owner
,或者将一行与一起传递table* owner
,或者您必须使您的 Row 更加智能并强制所有 Rows 包含 a table* owner
(即,让 Rows 包含对所有者的反向引用)
当然,反向引用可以是任何形状。它不需要是指针。您可以通过Table&
、 a shared_ptr<Table>
、 astring tablename
或任何可以帮助您直接或通过某个管理器访问表的方法。重要的是,要么 Row 必须包含它,要么它必须单独传递但与行一起传递。