# How I can return mavsdk::System in a function

**URL:** <https://discuss.px4.io/t/how-i-can-return-mavsdk-system-in-a-function/16925>\
**Category:** MAVSDK\
**Created:** [May 29, 2020, 3:32am UTC](https://discuss.px4.io/t/how-i-can-return-mavsdk-system-in-a-function/16925 "2020-05-29T03:32:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![minhhieutran0407](https://discuss.px4.io/letter_avatar_proxy/v4/letter/m/fbc32d/32.png) [@minhhieutran0407](https://discuss.px4.io/u/minhhieutran0407)\
**Post date:** [May 29, 2020, 3:32am UTC](https://discuss.px4.io/t/how-i-can-return-mavsdk-system-in-a-function/16925/1 "2020-05-29T03:32:59Z")

</div>

Hello. I want to build a drone object by C ++ using MAVSDK, containing mavsdk :: System as an attribute, a method that returns mavsdk :: System and some functions that perform some actions such as takeoff, landing, mission. But when I call getSystem, it discovers the system but it will exit the program when getSystem returns mavsdk :: System. How can i do that? Thank you! This is my getSystem function:

System& Drone::getSystem(){  
Mavsdk dc;  
std::string connection\_url;  
connection\_url = “udp://:14540”;  
ConnectionResult connection\_result;

```
bool discovered_system = false;

connection_result = dc.add_any_connection(connection_url);

if (connection_result != ConnectionResult::Success) {
    std::cout << ERROR_CONSOLE_TEXT << "Connection failed: " << connection_result
              << NORMAL_CONSOLE_TEXT << std::endl;
    exit(EXIT_FAILURE);
}

system = dc.system();

std::cout << "Waiting to discover system..." << std::endl;
dc.register_on_discover([&discovered_system](uint64_t uuid) {
    std::cout << "Discovered system with UUID: " << uuid << std::endl;
    discovered_system = true;
});

sleep_for(seconds(2));

if (!discovered_system) {
    std::cout << ERROR_CONSOLE_TEXT << "No system found, exiting." << NORMAL_CONSOLE_TEXT
              << std::endl;
    exit(EXIT_FAILURE);
}

return system;

```

}
