WPARAM
и LPARAM
являются типами. Вместо этого вы должны использовать msg.wParam
и msg.lParam
:
if((HIWORD(msg.wParam)) == BN_CLICKED and ((HWND)msg.lParam) == hwndButton1)
Вы, вероятно, хотите, чтобы родительские и дочерние узлы имели тип того же типа , что и сам узел, а не только некоторый тип , соответствующий Node
. Это будет Self
в определении протокола:
protocol Node {
var parent: Self? { get set }
var children: [Self] { get set }
}
Теперь вы можете определить конкретный класс (см. Требование к протоколу Swift, которое может быть удовлетворено только при использовании окончательного класса для почему класс должен быть final
):
final class TreeNode: Node {
var parent: TreeNode? = nil
var children: [TreeNode] = []
}
и
func getReversedChildren<T: Node>(node: T) -> [T] {
return node.children.reversed()
}
компилируются без проблем.