LINUX.ORG.RU

Специализация шаблона (C++)


0

0

У меня есть шаблонный класс template <int s> class A { //... int m[s]; void f(); };

И есть специализация: template<> class A<10> { /... void g(); };

Если мы создаём объект этой специальзации, то нам доступен только метод g.

Вопрос: как из этой специализации обратиться к полю m и методу f неспециализированного класса? По идее, это решается через наследование. Но как это сделать синтаксически правильно?

Я пробовал сделать по примеру в книге Страуструпа язык C++ (гл. 13.5, стр. 392), но не получилось. Я чего-то не понял или это сделать вообще невозможно?

anonymous

ну например так:
#include <iostream>

template <int s> class Foo {
public:
	int m[s]; 
	void f() { std::cout << "Foo::f()" << std::endl; }
};

template <int s> class A : public Foo<s> { 
//... 
	
};


template<> class A<10> : public Foo<10> { 
//... 
public:
	void g() { this->f(); }
};

int main()
{
	A<10> a;
	a.g();
}

fghj ★★★★★
()
Ответ на: комментарий от fghj

fghj, спасибо, этот вариант пойдёт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.