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