had been done & having been done 区别

问题描述:

had been done & having been done 区别
All the flights____because of the snowstorm,we had to take the train instead.
A.were canceled B.had been canceled C.having canceled D.having been canceled
为什么不是B,不是应该用过去完成时吗?

这是独立主格结构,不是谓语动词,所以不能用had been done,只能用现在分词完成时的被动式.如果你用had been done,we 的前面就必须加一个and 或其他的并列连词了.