以下是我正面臨的問題的一個小規模示例。在下面的例子中,我使用了int指針,但是在我自己的代碼中,我真的使用了指向另一個類(節點類)的指針。
問題似乎是我正在使用值指針調用(如果有這樣的事情)。我不知道,我認爲指針是通過引用。
我確實需要能夠將多個指針傳遞給該方法,而我並不想爲每個指針編寫特定的方法。
當我運行代碼時,當然,我得到某種錯誤,因爲它試圖訪問尚未分配的指針。 我不明白爲什麼它不會初始化正確的指針,如果我通過我想要的特定指針。C++類指針不保存任何內容。
任何幫助將不勝感激。
#include <iostream>
using namespace std;
class Test {
private:
int *p1;
int *p2;
int sizeP1;
int sizeP2;
public:
int* getIntPointer() {return p1;}
void initializeP1(int *ip,int n){
sizeP1=n;
ip=new int[n];
for(int i=0;i<n;i++)
p1[i]=i;
}
void printP1() {
for(int i=0;i<sizeP1;i++)
cout<<p1[i]<<" ";
}
};
int main() {
Test t;
t.initializeP1(t.getIntPointer(),10);
t.printP1(); //this fails.. but why? How can I fix it?
return 0;
}
嗨託尼,我試過,但它不適合我。 – Markymark
我不確定如何在此處正確地進行語法高亮顯示,但我確實已將其更改爲上面的顯示方式。唯一的區別是我的initializeP1方法在類內部,我稱它爲你在主要方法中顯示的方式。不過,我像這樣通過了p1。 int * p = t.getIntPointer(); t.initializeP1(&p,10); – Markymark