J'essaye de surcharger ostream et istream en tant qu'indépendant de la classe dans un modèle. J'ai regardé en ligne mais n'ai pas été en mesure de trouver beaucoup qui spécifie sur la surcharge de modèle, aussi ce que j'ai vu semble indiquer que c'est la manière de préparer ces charges. Il est évident que je suis très novice en programmation et j'apprécierais toute aide. Je vous remercie.Surcharger les opérateurs d'insertion et d'extraction en tant que modèles
#include <stdio.h>
#include<vector>
#include<iostream>
using namespace std;
template<class T>
class MyClass
{
enter code here
public:
MyClass();
MyClass(const T& p_val1);
MyClass(const MyClass<T>& p_val1);
~MyClass();
MyClass<T>& operator=(MyClass<T>& rhs);
friend ostream& operator<<(ostream& lhs, const MyClass<T> &printme);
friend istream& operator>><T>(istream& lhs, MyClass<T>& readme);
private:
T* m_val1;
};
implémentation de l'ostream et de l'istream.
template<class T>
ostream& operator<<(ostream&lhs, const MyClass<T>& printme)
{
lhs << printme.m_val1;
return lhs;
}
template<class T>
istream& operator>>(istream& lhs, MyClass<T>& readme)
{
lhs >> *(readme.m_val1);
return lhs;
}
ici sont les erreurs
Undefined symbols for architecture x86_64:
"MyClass<int>::~MyClass()", referenced from:
_main in main.o
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, MyClass<int> const&)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Fonction principale
MyClass<int> a(8);
MyClass<int> b(9);
cout << " Enter a value for the two types to be swapped: ";
cin >> a >> b;
cout << "Before swapping...\n";
cout << "Object a's pointer member dereferences a value of:\t" << a << endl;
cout << "Object b's pointer member dereferences a value of:\t" << b << endl;
Veuillez écrire le code que vous êtes en train de compiler. –