Да, вы можете вернуть только один объект из функции. Но вы можете сделать так, чтобы он возвращал составной объект, такой как структура или класс. Традиционно вы используете структуры только для объектов данных, потому что это то, что они были в C.
struct Triangle
{
double a;
double b;
double c;
};
Затем вы можете вернуть Triangle
объект из функции. И получить доступ к его членам таким образом:
Triangle tri1; // first, create an instance of the struct
tri1.a = 5.0f; // assign a value to a member
Рекомендуется выбирать значимые имена для ваших типов данных (как и в случае с вашими переменными) и всегда проектировать типы данных так, чтобы они представляли то, что они назвали.
Чтобы сделать код более выразительным, вы могли бы пойти дальше с более объектно-ориентированным подходом. Вы можете дать типу данных Triangle
функции-члены, которые вычисляют его углы, так что вы можете «спросить» Triangle
, каковы его углы.
(Вы должны также назвать его классом в тот момент, потому что он больше не является чистой структурой данных, но это вопрос соглашения. В C ++ структуры и классы почти одинаковы.)
class Triangle
{
public:
// everything in this section can be accessed from outside
// this is a constructor. It is a special function that lets you create a Triangle
Triangle(double pa, double pb, double pc)
: a(pa), b(pb), c(pc) // initialize the members
{}
// getters for the private members (not needed but that way they can't directly be changed)
double get_a() const
{
return a;
}
double get_b() const
{
return b;
}
double get_c() const
{
return c;
}
double alpha() const;
double beta() const;
double gamma() const;
// should be const because they dont change anything about the object
private:
// the default access for classes, everything in this section can only be accessed by member functions
double a;
double b;
double c;
};
// member function definitions outside of class declaration
double Triangle::alpha() const
{
// calculate and return alpha...
}
double Triangle::beta() const
{
// calculate and return beta...
}
double Triangle::gamma() const
{
// ...
}
Вы можете использовать этот класс следующим образом:
int main()
{
// create a Triangle by calling the constructor
Triangle tri1(5.0, 7.0, 8.0);
std::cout << "Alpha: " << tri1.alpha() << std::endl;
std::cout << "Beta: " << tri1.beta() << std::endl;
std::cout << "Gamma: " << tri1.gamma() << std::endl;
return 0;
};