Я работаю над проектом с предварительно подготовленным файлом.hpp со всеми объявлениями и т.д.
Структура объявляется в частной части класса вместе с некоторыми частными членами.
Мне нужно создать массив с типом структуры в моем.cpp файле.
//.hpp
private:
struct foo
{
std::string a;
unsigned int b;
};
std::string* x;
unsigned int y;
//.cpp
unsigned int returny()
{
return y; // No errors
}
foo newArray[10]; // Compile time error; unknown type name
Почему я могу вернуть y, который также является приватным, но не выделяет массив из структуры foo?
Как я могу это исправить? (Я во вступительном классе C++... поэтому, надеюсь, есть простое решение)
вы должны определить структуру int вне класса, как это
struct Foo
{
std::string a;
unsigned int b;
};
class A {
private:
Foo foo;
...
}
Есть несколько вопросов.
Вы не можете использовать тип, определенный в private
разделе класса, как вы пытаетесь.
Вложенный тип можно использовать, указав соответствующую область.
EnclosingClass::foo newArray[10];
Но это будет работать только в том случае, если foo
определен в public
разделе EnclosingClass
.
newArray
находится внутри функции-члена, вы не должны получать эту ошибку. Пожалуйста, разместите полный пример. Если это не внутри функции-члена, вы, вероятно, делаете это неправильно. (Если это вводный класс C ++ и вы получили заголовок, вы должны выполнить упражнение, не создавая массив структуры вне класса.)