C++ C++;:错误:获取临时[-fppermissive]的地址

C++ C++;:错误:获取临时[-fppermissive]的地址,c++,C++,所以基本上我有一个错误:取临时地址,我不知道为什么 我试图简化代码,只关注问题本身。该错误发生在地址数组上 main.cpp有以下几行: CPerson Student1("Test1", "street1.", "15a", 12045, "Berlin", 15, 9, 1989); CPerson Student2("Test2", "street2", &q

所以基本上我有一个错误:取临时地址,我不知道为什么

我试图简化代码,只关注问题本身。该错误发生在地址数组上

main.cpp有以下几行:

   CPerson Student1("Test1", "street1.", "15a", 12045, "Berlin", 15, 9, 1989);
   CPerson Student2("Test2", "street2", "27", 29031, "Milan", 27, 5, 1991);
   CPerson Student3("Test3", "street3", "3-5", 12345, "Paris", 3, 11, 1987);
   CPerson Student4("Test4", "street4", "23", 19885, "Tokyo", 19, 7, 1985);
   CPerson *Studenten[4] = { &Student1, &Student2, &Student3, &Student4 };
   CAddress *Adressen[4] = { &(Student1.getAddress()), &(Student2.getAddress()),
                           &(Student3.getAddress()), &(Student4.getAddress()) }; //Error occurs here
caddress.hpp:

class CAddress
{
public:
    CAddress() = default;
    void print() const;
    friend class CPerson;

    ~CAddress(){};

private:
    std::string Street;
    std::string HouseNr;
    unsigned Zipcode;
    std::string City;
};
CPerson.hpp

class CPerson
{
public:
  CPerson() = default;
  CPerson(std::string m_Name, std::string m_Street,
          std::string m_HouseNr, unsigned m_Zipcode,
          std::string m_City, int m_Day, int m_Month, int m_Year);
  CAddress getAddress();
  void print() const;
  ~CPerson(){};

private:
  unsigned ID;
  std::string Name;
  CAddress Address;
  CDate Birthday;
};
CPerson.cpp

CPerson::CPerson(
    string m_Name,
    string m_Street,
    string m_HouseNr,
    unsigned m_Zipcode,
    string m_City,
    int m_Day, int m_Month, int m_Year)
{
    Name = m_Name;
    Address.Street = m_Street;
    Address.HouseNr = m_HouseNr;
    Address.Zipcode = m_Zipcode;
    Address.City = m_City;
    Birthday.Day = m_Day;
    Birthday.Month = m_Month;
    Birthday.Year = m_Year;
}

CAddress CPerson::getAddress()
{
    return this->Address;
}

我试图删除数组上的指针和数组元素上的地址,但它工作正常,但我真正想要的是绕过它,保持main不变。

CAddress CPerson::getAddress()
返回
此->地址的副本,因此它是一个临时对象。制作Daclariation
const CAddress&CPerson::getAddress()
@S.M.这看起来像一个答案:)@cigien这个问题不值得回答,它是@S.M的副本。如果你认为它是一个副本,那么你能投票关闭它吗?这将避免多余的答案被发布。让班级做你想做的不是问题,而是你想在
main
中做什么?为什么要存储指向对象成员的指针?