我在Java中編寫了一個名爲Nod.java的類。如何將Java中編寫的「ArrayList <ClassNod>」轉換爲C++程序語言?
import java.util.ArrayList;
import java.util.Arrays;
class Nod {
int[] vol;
String op="";
Nod parent;
int adancime;
Nod (int[] vol, String op,Nod parent,int adancime){
this.vol=vol;
this.op=op;
this.parent = parent;
this.adancime=adancime;
}
public String toString() {
return op;
}
public int getAdancime() {
return adancime;
}
public ArrayList<Nod> getCale(ArrayList<Nod> lnoduri) {
lnoduri.add(0, this);
if (parent != null) lnoduri = parent.getCale(lnoduri);
return lnoduri;
}
public ArrayList<Nod> getCale()
{ return(getCale(new ArrayList<Nod>())); }
}
,我想重寫它在C++中,但我不知道如何在C++重寫這兩個功能:
public ArrayList<Nod> getPath(ArrayList<Nod> lnoduri) {
lnoduri.add(0, this);
if (parent != null) lnoduri = parent.getPath(lnoduri);
return lnoduri;
}
public ArrayList<Nod> getPath(){
return(getPath(new ArrayList<Nod>()));
}
這些功能存儲每點頭父路徑。
你能幫助我嗎?
編輯
因爲它是一個相關的問題,我在這裏添加它。
我用Java寫了一個函數爲「花瓶」類:
public ArrayList<Nod> succesori(Nod parent) {
// "Nod" is another class.
ArrayList<Nod> listTest = new ArrayList<Nod>();
// operations/conditions;
listTest.add(new Nod(vol,op,parent,adancime+1));
return(listTest);
}
,我想在C重寫++:
vector<Nod*> Vase::succesori(Nod *parinte)
{
vector<Nod*> *listTest = new vector<Nod*>();
// operations/conditions;
listTest.insert(new Nod(vol,op,parent,adancime+1));
return (*listTest);
}
但我得到一個錯誤,當我嘗試EXECUT這個命令: listTest.insert(new Nod(vol,op,parent,adancime + 1));
智能感知:表達式必須具有類類型
錯誤1錯誤C2228:左 '.insert' 必須有類/結構/聯合
我如何添加/插入在listTest一個新的Nod類?
轉換的東西用Java編寫的C++的最好的辦法是重新設計整個事情;這兩種語言的語義和習語太不一樣了。例如,這個類是否有任何子類?是否有任何子類重寫'getPath'? – Joni
向已經回答的問題添加另一個問題是個不錯的主意。不過,你正在混合使用非指針的指針。代碼應該看起來如下:'vector Vase ::後繼者(Nod *父){vector listTest; listTest.insert(new Nod(...));返回listTest; }' –
nosid
對不起,因爲這個......下次我會開一個新的問題。我寫了你所說的,並且我得到了另一個錯誤:「錯誤錯誤C2661:'std :: vector <_Ty> :: insert':沒有重載函數需要1個參數」和「IntelliSense:沒有重載函數的實例」std ::向量<_Ty, _Ax> :: insert [與_Ty = Nod *,_Ax = std :: allocator]「匹配參數列表」和「IntelliSense:函數調用中的參數太少」。該插入有什麼不對... –
Romulus