0
我正在使用下面的scala代碼,嘗試使用虛擬方法表(動態分配)將此代碼轉換爲C語言。動態分配,C
這是Scala代碼:
abstract class Node(n: String) {
val id = Node.next
var name: String = n
def size: Int
def nrNodes: Int = 1
def find(q: String): Set[Node] =
if(name.contains(q)) Set(this) else Set()
}
我的問題是與這部分代碼:
def find(q: String): Set[Node] =
if(name.contains(q)) Set(this) else Set()
我試圖把它翻譯成C,這是我到目前爲止:
Set find(Node *n, char * s){
if(strstr(s,n->name)!=0){
return (Set) n->name;
}
return ((Set (*)(Node *)) n->vtable[FIND])(n);
}
所以找到返回一組節點,如果它包含一個節點,否則一個空集。當我運行這個它提供了以下錯誤:
error: unknown type name 'Set'
use of undeclared identifier 'Set'
我不知道如果我要使用結構設置或我的查找方法是錯誤的一般!
這裏是我的虛函數表:
enum Node_vtablekeys{
SIZE=0,
NRNODERS=1,
FIND=2
};
你有沒有在任何地方實際聲明'Set'? – rightfold
@rightfold你的意思是像在typedef節點?我應該把結構集集? –
如果'set'是一個結構體,那麼它的類型名稱是'struct set',除非您使用'typedef'爲該類型創建了一個暱稱。不要忘記,你必須實際設計並聲明'struct'! – keshlam