Comment initialiser un objet avec un membre d'objet privé dont le constructeur mange une référence non-const comme paramètre

sheucm

J'ai posé cette question et je ne parviens toujours pas à résoudre le problème de mon projet.

Mon projet utilise une bibliothèque tierce, Hazelcast C ++ Client .

L'utilisation de Hazelcast Client est comme:

#include "hazelcast/client/HazelcastAll.h"

using namespace hazelcast::client;

int main(){
    ClientConfig clientConfig;
    Address address("192.168.85.34", 5701);
    clientConfig.getNetworkConfig().addAddress(address);
    HazelcastClient hz(clientConfig);

    // do something...

    hz.shutdown();
    return 0;
}

Ce code ne pose aucun problème. Plus d'exemples peuvent être obtenus sur son site Web . Cependant, si je veux créer en HazelcastClient hztant que membre privé de classe, je n'ai aucune idée d'instancier ma classe !!

J'ai vérifié le HazelcastClientconstructeur dans l'en -tête HazelcastClient.h , le constructeur utilise ClientConfig &configcomme paramètre, ce qui laisse le code suivant provoquer une erreur comme:

HzService.cpp: erreur: impossible de lier une référence lvalue non-const de type 'hazelcast :: client :: ClientConfig &' à une rvalue de type 'hazelcast :: client :: ClientConfig'

C'est parce que le message de compilation a 14282 lignes, ce qui est trop pour coller ici, donc je viens de coller une erreur importante ci-dessus! Le message de compilation complet peut être téléchargé ici .

#include "hazelcast/client/HazelcastAll.h"
using namespace hazelcast::client;

class HzService {
public:
    HzService();
    virtual ~HzService();

private:
    // Variables:
    HazelcastClient hz_client;

    // Functions:
    ClientConfig createLocalConfig();
};

HzService::HzService()
    :hz_client(createLocalConfig()){
}

HzService::~HzService() {
    hz_client.shutdown();
}

ClientConfig HzService::createLocalConfig() {
    ClientConfig clientConfig;
    Address address("192.168.85.34", 5701);
    clientConfig.getNetworkConfig().addAddress(address);
    return clientConfig;
}

int main () { 
    HzService hs;
    return 0;
}

Peut-être que ce n'est pas le problème Hazelcast , mais la question si j'utilise une bibliothèque tierce que son constructeur de classe utilise une référence non-const comme paramètres, comment puis-je en faire un membre privé de classe?

Si le problème est spécifiquement lié à Hazelcast , je changerai le titre.



ÉDITER:

Si quelqu'un a besoin de tester le code, téléchargez d'abord le client Hazelcast C ++ et utilisez la commande suivante pour compiler (le contenu de test.cpp est le code ci-dessus):

g++ -std=c++11 \
    -I/path/to/hazelcast-cpp-client/hazelcast/include \
    -I/path/to/hazelcast-cpp-client/external/include/ \
    -I/path/to/hazelcast-cpp-client/hazelcast/generated-sources/include \
    test.cpp \
    /path/to/hazelcast-cpp-client/release/libHazelcastClient3.11_64.a \
    -lpthread
AndersK

Déclarez hz_client comme pointeur à la place.
Déclarer ClientConfig comme pointeur également

Dans HzService (), créez d'abord l'instance clientconfig, puis créez hz_client en lui passant l'instance de clientconfig.

Par exemple

class HzService
{
...
HazelcastClient* hz = nullptr;  // but better with smart pointer and custom deleter.
std::unique_ptr<ClientConfig> cc;
...

HzService()
{
  cc = std::make_unique<ClientConfig>();  
  Address address("192.168.85.34", 5701);
  cc->getNetworkConfig().addAddress(address);
  hz_client = new HazelcastClient(*cc.get());
}

puis ajoutez du code dans le destructeur pour arrêter et supprimer hz_client

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  2. 2

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  3. 3

    Résultat de l'échantillonneur JMeter : comprendre le temps de chargement, le temps de connexion et la latence

  4. 4

    Modbus Python Schneider PM5300

  5. 5

    Pourquoi Object.hashCode () ne suit pas la convention du code Java

  6. 6

    Comment faire une recherche partielle et obtenir un score pertinent dans Elasticsearch

  7. 7

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  8. 8

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  9. 9

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  10. 10

    Comment changer la couleur de la police dans R?

  11. 11

    Autocomplete avec java, Redis, Recherche élastique, Mongo

  12. 12

    MasterService d'ElasticSearch prend trop de temps pour calculer l'état du cluster et lancer ProcessClusterEventTimeoutException

  13. 13

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  14. 14

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  15. 15

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  16. 16

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  17. 17

    Quelque chose dans le cluster Elasticsearch 7.4 devient de plus en plus lent avec les délais de lecture de temps en temps

  18. 18

    Ajustement non linéaire avec R

  19. 19

    php ajouter et fusionner des données de deux tables

  20. 20

    Exporter la table de l'arborescence vers CSV avec mise en forme

  21. 21

    帶有 Spring Boot 和 Azure AD 的 KeyCloak

chaudétiquette

Archive