C ++ перекрестное включение - это нормально? - PullRequest
0 голосов
/ 07 мая 2018

Я изучал C ++ некоторое время (не так долго), и теперь я столкнулся с проблемой:

#ifndef _FILE_A_H
#define _FILE_A_H

template <typename T>
class A {
    void func();
    /// ... some code here
};

#include "a.cpp"

#endif

Я хочу разместить реализацию A-класса в файле 'a.cpp'. Но для этого мне нужно включить 'a.h'. Это нормально для перекрестного включения файлов в этой ситуации?

У меня есть что-то подобное в 'a.cpp' (это компилируется, но выглядит неловко):

#ifndef _FILE_A_CPP
#define _FILE_A_CPP

#include "a.h"

template <typename T>
void A<T>::func() {
    /// ... some code here
}

/// ... and some code here

#endif

1 Ответ

0 голосов
/ 07 мая 2018

Спасибо @Magix за ответ.Теперь мой a.cpp изменился на a.tpp и выглядит примерно так:

#include <iostream>

template <typename T>
void A<T>::func() {
    /// ... some code here
}

/// ... and some code here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...