Я видел похожие примеры, но не понял их полностью, поэтому, пожалуйста, не отмечайте это как дубликат сразу. Я думаю, что есть простое решение для моей проблемы, и я только изучаю C++
.Передовая декларация класса шаблона C++
Я хочу использовать:
template<class T, std::size_t N>
class arnas_array {
//a copy of std:array functionality, basically, here.
};
в другой класс заголовка, другой файл, например:
class options_databaze {
public:
struct options_to_save{
arnas_array<char, 123> option_name;
//char option_name[103];
int * option_value_pointer;
};
};
И я не могу заставить его работать. вперед заявление, как это не будет работать:
template<class T, std::size_t N>
class arnas_array;
Я много об этой проблеме не знаю, первый раз, когда я застрял здесь, любые примеры золота.
error C2079: 'options_databaze::options_to_save::option_name' uses undefined class 'arnas_array<char,123>'
Ваше прямое объявление на самом деле отлично, однако вы не можете использовать объявленный вперед класс для объявления члена этого типа, пока класс не будет полностью определен (поскольку в противном случае компилятор не мог бы определить размер члена и, следовательно, размер 'struct options_to_save'). Однако вы можете объявить элемент, который является указателем на этот тип (указатели данных имеют одинаковый размер независимо от их типа). (И вам не хватает ';' в конце определения вашего класса, но я уверен, что это просто ошибка с копированием и вставкой.) – Cameron
Как мне избежать последующих объявлений и использовать один и тот же класс в каждом файле? я бы не хотел менять свой код, чтобы использовать указатели, im, редактируя приложение, не записывая новый код в этой ситуации. – Tomas
В качестве подсказки всегда указывайте фактические сообщения об ошибках, которые вы получаете при попытке скомпилировать код при отправке – harmic