//Fuente: http://w...content-available-to-author-only...p.com/cpp-tutorial/813-friend-functions-and-classes/
#include<iostream>
class Humidity;
class Temperature
{
private:
int m_temp;
public:
Temperature(int temp=0) { m_temp = temp; }
void setTemperature(int temp) { m_temp = temp; }
friend void printWeather(const Temperature &temperature,
const Humidity &humidity);
};
class Humidity
{
private:
int m_humidity;
public:
Humidity(int humidity=0) { m_humidity = humidity; }
void setHumidity(int humidity) { m_humidity = humidity; }
friend void printWeather(const Temperature &temperature,
const Humidity &humidity);
};
void printWeather(const Temperature &temperature,
const Humidity &humidity)
{
std::cout << "The temperature is " << temperature.m_temp <<
" and the humidity is " << humidity.m_humidity << '\n';
}
int main()
{
Humidity hum(10);
Temperature temp(12);
printWeather(temp, hum);
return 0;
}
Ly9GdWVudGU6IGh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jcHAtdHV0b3JpYWwvODEzLWZyaWVuZC1mdW5jdGlvbnMtYW5kLWNsYXNzZXMvCiNpbmNsdWRlPGlvc3RyZWFtPgpjbGFzcyBIdW1pZGl0eTsKCmNsYXNzIFRlbXBlcmF0dXJlCnsKcHJpdmF0ZToKICAgIGludCBtX3RlbXA7CnB1YmxpYzoKICAgIFRlbXBlcmF0dXJlKGludCB0ZW1wPTApIHsgbV90ZW1wID0gdGVtcDsgfQoKICAgIHZvaWQgc2V0VGVtcGVyYXR1cmUoaW50IHRlbXApIHsgbV90ZW1wID0gdGVtcDsgfQoKICAgIGZyaWVuZCB2b2lkIHByaW50V2VhdGhlcihjb25zdCBUZW1wZXJhdHVyZSAmdGVtcGVyYXR1cmUsCiAgICAgICAgY29uc3QgSHVtaWRpdHkgJmh1bWlkaXR5KTsKfTsKCmNsYXNzIEh1bWlkaXR5CnsKcHJpdmF0ZToKICAgIGludCBtX2h1bWlkaXR5OwpwdWJsaWM6CiAgICBIdW1pZGl0eShpbnQgaHVtaWRpdHk9MCkgeyBtX2h1bWlkaXR5ID0gaHVtaWRpdHk7IH0KCiAgICB2b2lkIHNldEh1bWlkaXR5KGludCBodW1pZGl0eSkgeyBtX2h1bWlkaXR5ID0gaHVtaWRpdHk7IH0KCiAgICBmcmllbmQgdm9pZCBwcmludFdlYXRoZXIoY29uc3QgVGVtcGVyYXR1cmUgJnRlbXBlcmF0dXJlLCAKICAgICAgICBjb25zdCBIdW1pZGl0eSAmaHVtaWRpdHkpOwp9OwoKdm9pZCBwcmludFdlYXRoZXIoY29uc3QgVGVtcGVyYXR1cmUgJnRlbXBlcmF0dXJlLAogICAgY29uc3QgSHVtaWRpdHkgJmh1bWlkaXR5KQp7CiAgICBzdGQ6OmNvdXQgPDwgIlRoZSB0ZW1wZXJhdHVyZSBpcyAiIDw8IHRlbXBlcmF0dXJlLm1fdGVtcCA8PAogICAgICAgIiBhbmQgdGhlIGh1bWlkaXR5IGlzICIgPDwgaHVtaWRpdHkubV9odW1pZGl0eSA8PCAnXG4nOwp9CgppbnQgbWFpbigpCnsKICAgIEh1bWlkaXR5IGh1bSgxMCk7CiAgICBUZW1wZXJhdHVyZSB0ZW1wKDEyKTsKCiAgICBwcmludFdlYXRoZXIodGVtcCwgaHVtKTsKCiAgICByZXR1cm4gMDsKfQoK