I apologize if it is a simple question. I tried to create a simple contract interaction. I've tried to follow instructions on `https://ethereum.stackexchange.com/questions/51760/contract-interaction`, docs, and another examples to create a simple contract interaction in solidity 0.5.16. There are two contracts, one is a hello-world contract, called `con_H` (H of "hello") and owns the `helloworld()` function. The other one is a contract "A" that calls the `helloworld` function of `con_H`. The point is that remix-ide throws an error that I find strange:
`call to con_A.fun_A1 errored: VM error: revert. revert The transaction has been reverted to the initial state. Note: The called function should be payable if you send value and the value you send should be less than your current balance. Debug the transaction to get more information.`

The code is the following one:

    pragma solidity ^0.5.16;

    contract con_H {
      function helloWorld() external pure returns (string memory) {
        return "Hello, World!";
      }
    }


    contract con_A {
        con_H ins_H;
        
        function fun_A1() external view returns (string memory) {
            return ins_H.helloWorld();
        }
    }

I've also tried for initial lines of con_A:

    contract con_A {
        con_H ins_H = con_H(msg.sender);
        ...
    }

with msg.sender address with enough balance of 100 test-ETH.

The only way I manage it to work is deploying aside con_H at a given direction `0x..123` and then force the instance H inside con_A with that exact address: `con_H ins_H = con_H(0x..123);`

How should be done? suggestions..?