2017-10-19 23 views
0

J'ai créé un projet de pointeur intelligent pour l'auto étude similaire à https://www.codeproject.com/Articles/15351/Implementing-a-simple-smart-pointer-in-c je ne voulais pas utiliser std::shared_ptr et je ne voulais pas utiliser weak_ptr ou unique_ptrC++ ajouter la classe à espace de noms pour créer un nouvel objet de classe

Mini version du projet http://cpp.sh/957bl

maintenant, je veux développer le projet et créer un interface qui fait des objets et une fonction de copie. Le projet d'origine contient un constructeur de copie et un constructeur normal.

Ce que je voudrais savoir, c'est comment créer la fonction de copie et la fonction make.

erreurs im obtenir:

Error C3861 'makeShared': identifier not found main.cpp 22 
Error C3861 'copyShared': identifier not found main.cpp 12 
Error C2653 'TestAllocator': is not a class or namespace name PointerInterface.hpp 35 
+0

Et où sont ces fonctions déclarées ou définies? Apparemment, vous ne figurez dans aucun des fichiers d'en-tête que vous incluez (et vous ne nous en montrez aucun). –

+0

Sur une autre note, * pourquoi * ne voulez-vous pas utiliser les pointeurs intelligents standard? Est-ce seulement à des fins d'apprentissage, ou y a-t-il un autre problème sous-jacent que vous voulez résoudre? Si c'est un problème sous-jacent, alors peut-être que vous devriez poser des questions sur * cela * au lieu d'essayer de réinventer (plutôt mal je dirais) la roue. –

+1

@Someprogrammerdude OP a écrit "pour l'auto-étude" – klutt

Répondre

0

Une chose que vous voulez faire quand vexé de ne pas voir pourquoi les déclarations manquent est de regarder la sortie de préprocesseur pour le fichier en cours de compilation. Il devrait être sur un menu dans la plupart des IDEs C++ ou disponible via un drapeau de ligne de commande. La sortie est souvent excessivement longue, mais elle vous montrera sans ambiguïté l'entrée qui va au compilateur.