Шаблон C ++: явное объявление значения функции-члена / избежание проблемы с макросами

Вы должны закончить строку символом \ 0. Вот почему они называются нулевыми завершенными строками.

Также целесообразно выделить 1 дополнительный символ для хранения \ 0.

0
задан NathanOliver 19 March 2019 в 16:20
поделиться

1 ответ

У тебя это почти есть. Когда вы специализируете шаблон, и это не частичная специализация, вы не включаете никаких параметров шаблона. Это сделало бы код похожим на

template <int dim, int spacedim>
class FE_problem
{
public:
   void generate_mesh();
};

template <> // full specialization, leave template parameter blank as they are provided below
void FE_problem<1, 3>::generate_mesh()
//              ^^^^ specify the specialized types/values here  
{
    std::cout << "void FE_problem<1, 3>::generate_mesh()\n";
}

template <> // full specialization, leave template parameter blank as they are provided below
void FE_problem<3, 3>::generate_mesh()
//              ^^^^ specify the specialized types/values here  
{
    std::cout << "void FE_problem<3, 3>::generate_mesh()\n";
}

int main()
{
    FE_problem<1, 3>{}.generate_mesh();
    FE_problem<3, 3>{}.generate_mesh();
}

, который выводит

void FE_problem<1, 3>::generate_mesh()
void FE_problem<3, 3>::generate_mesh()
0
ответ дан NathanOliver 19 March 2019 в 16:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: