簡體   English   中英

包含指針的向量

[英]A vector containing pointers

解決方案:我必須編寫#include "polynomial.h" ,此外,我還必須傳遞P作為對addPolynomial的引用。

我有一個名為Function的類,具有作為成員變量vector<functionSegment*> functionParts

functionSegment有兩個派生類,分別是PolynomialExponential

編輯函數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確實是new -ed。 因此,我應該在main編寫Polynomial* P = new Polynomial並使用副本構造函數,或者通過引用傳遞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* 由於PolynomialfunctionSegment類型,因此問題在於我們需要const*& Polynomial 這是有道理的,因為它效率更高。 但是接下來我該怎么辦? P是指向多項式對象的指針,因此我們需要對指針的引用。

(mainFunction.functionParts).push_back(&P)不起作用。

首先是Polynomial* P; 必須是Polynomial* P = new Polynomial; 除非addPolynomial將P作為Polynomial *&並分配new ed Polynomial

現在問這個問題。 您或者忘記了從functionSegment公開繼承,或者忘記了包含標頭,並且已經向前聲明了類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM