【问题标题】:STL vector of pointers will not compile指针的 STL 向量将无法编译
【发布时间】:2020-01-31 15:31:58
【问题描述】:

我想我有 C++ 98... 我想创建指向现有对象的指针,然后将这些指针存储在向量中。这是我的代码和编译器吠叫:

  vector<long double> *p1;
  p1=&vOPCT;
  vector<long double> *p2;
  p2=&vOPCGas;

  vector<long double *> MyVec;
  MyVec.push_back(p1);   <- error
  MyVec.push_back(p2);   <- error

我做错了什么?

任何帮助表示赞赏.. 弗雷德·E。

【问题讨论】:

  • p1p2vector&lt;long double&gt; * 类型,not long double *MyVec 的有效负载类型。

标签: pointers vector stl


【解决方案1】:
vector<long double *> MyVec;
MyVec.push_back(p1);   <- error

您试图将指向向量 (vector&lt; long double&gt;*) 的指针放入指向 long double (vector&lt; long double *&gt;) 的指针向量中。那是行不通的。

这应该可行:

vector<long double *> MyVec;
long double *p1 = nullptr;
MyVec.push_back(p1);

【讨论】:

  • 我的指针 p1 指向一个现有对象 (vOPCT),它是一个长双精度向量。我可以让那部分工作。我有 许多 我想设置指针的其他对象。最终游戏是能够迭代指针(以及对象),以便能够调整矢量对象的大小。这是我关于如何做到这一点的想法。显然,指针向量不会像我尝试的那样工作。那么我的代码是试图设置一个指向长双精度的指针向量,还是指向长双精度向量的指针?
  • 您的代码正在尝试设置一个指向长双精度数(前者)的指针向量。如果要设置一个指向长双精度向量的指针向量(后者),则应将MyVec 声明为vector&lt;vector&lt;long double&gt; *&gt;
  • 好的,现在我明白了!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
相关资源
最近更新 更多