我正在开发一个C++项目。我需要将不同的类放入std::vector中。我找到了(在单个向量中使用不同类的对象?),它可以通过创建具有公共类型的类,然后将指针放入向量来实现。在这种情况下,我可以将指针转换为我需要的类型。这对我来说很清楚。
还提到了原则上可以使用智能指针,即
假设我有
[bcc64错误] 类型 'value_type' (即 'std::unique_ptr<.....>') 不提供下标运算符。
我该如何告诉编译器第二个索引与TMyClass对象相关,而不是unique_ptr?如果有人能够解释一下如何在这种情况下访问元素,我将不胜感激。
还提到了原则上可以使用智能指针,即
std::vector<std::unique_ptr<TMyClass>>
而不仅仅是指针。这就是我的问题所在。TMyClass
有索引运算符(operator[]
)。假设我有
std::vector<std::unique_ptr<TMyClass>> A
。我尝试像这样访问TMyClass
对象的元素:A[0][0]
或A[0].get()[0]
或(A[0])[0]
但是编译时会出错:[bcc64错误] 类型 'value_type' (即 'std::unique_ptr<.....>') 不提供下标运算符。
我该如何告诉编译器第二个索引与TMyClass对象相关,而不是unique_ptr?如果有人能够解释一下如何在这种情况下访问元素,我将不胜感激。
(*A[0])[0]
吗?独特指针就像一个指针 - 你必须使用解引用运算符*
来访问它的内容。 - undefined