В моем файле заголовка я хочу избежать использования #include, но мой класс будет иметь вектор или указатель на вектор. Я доволен только указателем, но я не могу понять, как его объявить. Должен ли я объявить его как пустоту * и всегда бросать его? Это будет хромой.Вперед объявить указатель на контейнер STL?
// What do I type here to forward declare vector?
class Counters
{
Counters();
void inc(const char* s);
void print();
void clear();
private:
std::vector<int>* Counts;
int total;
};
Обращаем ваше внимание на то, что я хочу, чтобы у меня был контейнер, который должен храниться в моем классе, а не в контейнере. Размер указателей известен без необходимости ссылаться на объявление контейнера, поэтому, пожалуйста, не отвечайте, что это невозможно сделать, потому что компилятор должен знать декларацию контейнера.
* «В моем файле заголовка я хочу, чтобы избежать использования #include» * Это проблема именно там, просто включить то, что вам нужно. –
Почему вы хотите избежать '#include'? Не должно быть никакого вреда. –
Передовые декларации существуют по какой-то причине, ребята. Существует множество литературы по обрезке # включает в себя сокращение перекомпиляции, улучшение времени компиляции, улучшение переносимости, нарушение круговых зависимостей и т. Д. В моем случае это заявление будет потребляться компилятором CUDA, а также основным компилятором C++, и стоит попробовать чтобы не включать слишком много дерьма в коде, который будет анализировать CUDA. Доверьтесь мне. –