У меня есть два класса (ClassA и ClassB), у каждого из которых есть два метода (сравнить и сходиться).Эти методы работают точно так же, но эти классы не связаны полиморфно (по уважительной причине).Я хотел бы определить шаблон функции, который оба эти класса могут явно создать в качестве члена, но я получаю ошибки, потому что методы используют «this», и когда я превращаю их в шаблон, компилятор выдает ошибку, потому что они нефункции-члены.
Разве это невозможно из-за этого ограничения?Или есть какой-то способ использовать «this» внутри шаблона функции, который не объявлен как часть класса шаблона.Я провел некоторые исследования и ничего не нашел.
Logic.h
template <class T>
T* compare(const T& t) {
//stuff involving this
}
template <class T>
T* converge(const T& t,bool b) {
//other stuff involving this
}
ClassA.cpp
#include "ClassA.h"
#include "Logic.h"
//constructors
template ClassA* ClassA::compare(const ClassA& t) const;
template ClassA* ClassA::converge(const ClassA& t,bool b) const;
//other methods
classB похож.
Любая помощь приветствуется!