包含指针的向量

时间:2015-10-05 10:59:30

标签: c++ pointers inheritance reference

解决方案我必须写<script> $(function(){ $('.navbar-right li').click(function(){ $(this).addClass('active').siblings().removeClass('active'); }); }) </script> ,另外,我必须将#include "polynomial.h"作为对P的引用。

我有一个名为addPolynomial的类,其成员变量为Function

vector<functionSegment*> functionParts有两个派生类,分别为functionSegmentPolynomial

编辑函数Exponential是一个声明为
的函数 addPolynomial

void Function::addPolynomial(Polynomial* P, ifstream& input)中,我有以下内容:

main

编辑重新检查Polynomial* P; //I made a constructor that takes no arguments mainFunction.addPolynomial(P, input); //All that changes is the thing P is pointing to: NOTHING ELSE is changed (mainFunction.functionParts).push_back(P); //This gives problems 函数后,我发现第二条评论并非完全正确:addPolynomial确实是P - ed。因此,我应该在new中编写Polynomial* P = new Polynomial并使用复制构造函数,或者通过引用传递main。我选择做后者。

错误是:

P

显然,no matching function for call to 'std::vector<functionSegment*>::push_back(Polynomial*&)' candidates are: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = functionSegment*; _Alloc = std::allocator<functionSegment*>; std::vector<_Tp, _Alloc>::value_type = functionSegment*]| no known conversion from argument 1 from 'Polynomial*' to 'functionSegment* const&' 需要push_back,但它会收到functionSegment* const&。由于Polynomial*属于类型 Polynomial,问题是我们需要functionSegment。这是有道理的,因为它更有效率。但接下来我该怎么办? const*& Polynomial是指向Polynomial对象的指针,因此我们需要对指针的引用。

P无效。

1 个答案:

答案 0 :(得分:1)

首先Polynomial* P;需要Polynomial* P = new Polynomial;,除非addPolynomial将P视为Polynomial *&并指定new ed Polynomial。< / p>

现在提出问题。您忘记公开继承functionSegment或忘记包含标题,并向前声明了类型。