Проблема с возвратом структуры из функции - PullRequest
1 голос
/ 14 сентября 2011

Я хочу, чтобы функция возвращала структуру.Итак, в моем заголовочном файле я определил структуру и сигнатуру функции.В моем кодовом файле у меня есть актуальная функция.Я получаю ошибки об «неизвестном имени типа».Кажется, что все соответствует очень стандартному формату для этого.

Есть идеи, почему это не работает?

TestClass.h

class TestClass {
public:

    struct foo{
        double a;
        double b;
    };

    foo trashme(int x);

}

TestClass.cpp

#include "testClass.h"

foo trashme(int x){

    foo temp;
    foo.a = x*2;
    foo.b = x*3;

    return(foo)

}

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

foo является дочерним классом TestClass, а trashme является функцией-членом TestClass, поэтому вам необходимо указать их:

TestClass::foo TestClass::trashme(int x){

    foo temp;  // <-- you don't need to qualify it here, because you're in the member function scope
    temp.a = x*2;  // <-- and set the variable, not the class
    temp.b = x*3;

    return temp;  // <-- and return the variable, not the class, with a semicolon at the end
                  // also, you don't need parentheses around the return expression

}
2 голосов
/ 14 сентября 2011

foo не находится в глобальном пространстве имен, поэтому trashme() не может его найти. То, что вы хотите, это:

TestClass::foo TestClass::trashme(int x){ //foo and trashme are inside of TestClass

    TestClass::foo temp; //foo is inside of TestClass
    temp.a = x*2; //note: temp, not foo
    temp.b = x*3; //note: temp, not foo

    return(temp) //note: temp, not foo

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