Establecer la dirección de la billetera en la dirección de Crowdsale

Estoy usando un contrato de venta abierta de openZepplin que tiene el siguiente constructor

contract myContract is Crowdsale {
    function myContract 
    (
        uint256 _rate,
        address _wallet,
        MintableToken _token
    )
        public
        Crowdsale(_rate, _wallet, _token)
}

Quiero que mi dirección "_wallet" sea la misma que la dirección "myContract". ¿Hay alguna manera de obtener la dirección del contrato actual dentro del contrato?

El código Sudo sería algo como esto:

contract myContract is Crowdsale {
    function myContract 
    (
        uint256 _rate,
        address _wallet,
        MintableToken _token
    )
        public
        Crowdsale(_rate, <<this.address>>, _token)
}

Respuestas (1)

Puedes intentar pasar thisir address(this)(que es lo mismo) pero no funcionará. Parece que piensa que está tratando de implementar un contrato abstracto. En cuanto a por qué , todavía no lo sé y lo estoy investigando.

Esto es lo que básicamente estás tratando de hacer. Como dije, no funcionará.

contract A {
    address public my_address;

    function A(address _val) {
        my_address= _val;
    }
}

contract B is A {
    function B() {
        A(this);
    }
} 

Para que funcione, tendrás que modificar tus contratos y hacer lo siguiente:

contract A {
    address public my_address;

    function A() {
        my_address= this;
    }
}

contract B is A {
    function B() {
      //do more stuff
    }
} 

Si lo implementa en Remix, verá que my_addresstendrá el valor correcto.

Sí. Exactamente, tu primer ejemplo es dónde pasé una buena parte de mi día hoy. Gracias por el consejo, esto es muy útil, intentaré usar este enfoque
Alternativamente. Dado que B hereda de A, my_address está disponible en B. Así que puedo reescribirlo allí en la "función B". Es bastante complicado, pero me impedirá cambiar el código de OpenZepplin.