Возможно ли получить доступ к функциям аргумента шаблона шаблона вне шаблона? Я попытался следующий без успеха:Параметры шаблона доступа (класса) за пределами шаблона
class A {
public:
void func() { std::cout << ("A called"); }
};
template<class T>
class tClass {
public:
T* operator->() {
return mem;
}
T* operator*() {
return mem;
}
const T* operator->() const {
return mem;
}
const T* operator*() const {
return mem;
}
private:
T* mem;
};
и главный:
tClass<A>* t = new tClass<A>();
t->func();
Я получаю следующее сообщение об ошибке компилятора: error: 'class tClass<A>' has no member named 'func'
ли не переопределяют оператор ->
возвращает указатель на аргумент шаблона? Я спрашиваю, потому что я видел очень похожий код, который работал. Я также видел другие ответы, предлагающие использовать typedef
, но я не уверен, как это применимо здесь.
Игнорируйте тот факт, что объект mem
не инициализирован.
Заранее благодарен!
Вы, вероятно, имели в виду '(* t) -> func();' –
Кроме того, интерфейс интеллектуальных указателей [operator->] (http://www.cplusplus.com/reference/memory/shared_ptr/operator- > /) должен возвращать указатель, в то время как [operator *] (http://www.cplusplus.com/reference/memory/shared_ptr/operator-%3E/) должен возвращать ссылку. Но, конечно, вы можете реализовать их, как хотите, просто указав. – aslg