我有一個問題,它有點難以描述它,所以請容易對我。不能將參數1從'std :: _ Vector_iterator <_Myvec>'轉換爲'std :: _ Vector_iterator <_Myvec>'
我有兩個類,A和B,A級有一個私人成員 - 矢量:
class A
{
private:
struct complex
{
int x;
vector<int> y;
};
vector<complex> m_resultVector; // <---- the private member
public:
void getPointerToVector(vector<complex>::iterator it)
{
it = m_resultVector.begin();
}
};
我需要從B類可以訪問(只讀),這m_resultVector;
,我可以寫get
函數,但m_resultVector
是非常長的矢量,我不想將整個矢量複製到新的矢量,我想發送它的指針。我也需要B類的重要部分 - 不能改變的m_resultVector
class B
{
struct complex
{
int x;
vector<int> y;
};
void functionOf_B()
{
A class_A;
vector<complex>::iterator p_resultVector;
class_A.getPointerToVector(p_resultVector); // <------ compilation error here
// some reading from the content of p_resultVector
}
};
當我嘗試編譯它的內容,我得到的錯誤:
cannot convert parameter 1 from 'std::_Vector_iterator<_Myvec>' to 'std::_Vector_iterator<_Myvec>'
所以基本上,我有問題 -
- 爲什麼我得到這個錯誤?這兩個類中都定義了
complex
結構。 - 我需要在B類的
const iterator
上聲明哪裏以及如何聲明,因此它只能被讀取?我不確定...
'A :: complex'和'B :: complex'是不同的類型。 –
這是行不通的,因爲B中複雜結構的向量與A中複雜結構的不同,您試圖在2個類之間進行轉換。 – Spanky
我明白了..所以我怎樣才能返回一個const指針,該矢量? – user1673206