No. storage variables are pointers into your contract’s own storage.
It’s by design - if you could modify another contract’s storage just like that, contracts could not protect it from modification. So you can only ask another contract to modify its own storage for you by calling its external functions (if it has them).
You can do this the other way around though - you can use DELEGATECALL to let another contract modify your storage. The language will only let you do that with libraries - they can take storage parameters:
library L {
function updateHeight(Info storage info, uint newHeight) public {
info._height = newHeight;
}
}
EVM actually lets you do DELEGATECALL between contracts too but there’s no syntax for that in Solidity other than the low-level delegatecall().