【问题标题】:c++ vector pointer reference issuec++向量指针引用问题
【发布时间】:2022-06-28 23:48:17
【问题描述】:

所以我在创建和使用向量指针时遇到了一些问题。我试图用这些指针解决的问题是引用数据,而不需要过多的代码。这就是我当前定义变量的方式:

// Data vectors
std::vector<int16_t> amountData;
std::vector<float> speedData;

std::vector<int16_t> *pointerr = &amountData; // Should be auto, just testing

我通过代码引用了多次使用的数据,这就是为什么如果我可以只为活动数据(我打算使用的数据)提供一个指针会更容易。我无法让它工作,但使用诸如“*pointerr.size();”之类的命令等等。我得到错误:

request for member 'size' in 'pointerr', which is of pointer type 'std::vector<short int>*' (maybe you meant to use '->' ?)

当使用 '*pointerr->size();' 时,我得到:

invalid type argument of unary '*' (have 'std::vector<short int>::size_type {aka long long unsigned int}')

我知道这可能只是我没有完全理解指针/向量,而且我可能遗漏了一些东西。大多数其他类似的问题并没有真正回答我的问题(据我所知)。我感谢任何形式的帮助/想法等,在此先感谢:)

【问题讨论】:

  • @NateEldredge 给出了答案。
  • 两个不同类型的std::vector声明背后的意图是什么?您将无法让一个指针有时引用其中一个指针,有时又引用另一个指针。指针的类型必须与向量匹配。

标签: c++ pointers vector stdvector


【解决方案1】:

你想要pointerr-&gt;size()(没有*); -&gt; 运算符会为您解除对 pointerr 的引用。

或者,(*pointerr).size() 是等效的。您对*pointerr.size() 的尝试很接近,但. 运算符的优先级高于*,您必须先取消对指针的引用,然后才能将. 应用于它指向的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2010-10-16
    • 2012-06-07
    • 2018-10-02
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多