Я не очень хорошо разбираюсь в структурах. Но я создал это:C++ struct в заголовочном файле
в test.h:
class test {
public:
struct Astruct
{
int age;
int weight;
};
struct Astruct& MethodOne();
};
и test.cpp:
#include "test.h"
test::test() {}
struct Astruct& test::MethodOne() {
Astruct testStruct;
// code to fill in testStruct
return testStruct;
}
Цель этого выше кода является то, что я в состоянии возвращать struct
с MethodOne
.
Но на линии
struct Astruct & test::MethodOne(){
он говорит: Ошибка: заявление несовместимо с тем, что в файле заголовка.
Я этого не понимаю. Если бы я заменил struct на возвращаемый тип int
, не было бы ошибки? Что здесь не так?
И вторая ошибка я получаю, когда я вернусь testStruct: Ошибка: ссылка типа «Astruct &» (не сопз квалифицирован) не может быть инициализирован со значением типа «тест :: Astruct»
Классический один: вы возвращаете ссылку на временный. Научитесь компилировать свой код с включенным предупреждением и следовать инструкциям компилятора. – YSC
Ваше использование 'struct' выглядит так, как вы узнали его из книги C. В C++ вам нужно только знать, что нет никакой разницы между 'class' и' struct'. И второе, что вам нужно знать, это то, что в 'классе' спецификатор доступа по умолчанию является' private', тогда как в 'struct' он является' public', но на самом деле это единственная разница – user463035818
'struct test :: Astruct & test :: MethodOne() {', используйте пространство имен классов. Кстати, третья ошибка, которую вы получите, это «возвращение ссылки временного». Снимите ссылку в возвращаемом значении. –