C++ 执行聚合操作

C++ 执行聚合操作,c++,oop,C++,Oop,我有两个类:User和Book class User{ private: string name ; int age; int id; string password; string email; } class Book { private: string title; string isbn; int id; string category; double averageRating; Use

我有两个类:User和Book

class User{
 private:
   string name ;
   int age;
   int id;
   string password;
   string email;
}

class Book {
   private:
     string title;
     string isbn;
     int id;
     string category;
     double averageRating;
     User author;
}
我被要求只在有作者的情况下印刷这本书,类似于

if(author!="") {cout << ...etc}
if(author!=“”){cout
  • 一种解决方案是使用指针。您可以将作者更改为指针,并在需要时动态分配它。您可以执行空检查以查看作者是否可用,并采取相应的操作
  • 如果您不想进行动态分配,可以使用@Evg提到的C++17中的std::optional功能。请查看以下链接,可以使用:

  • 什么是
    author
    ?如果
    author
    总是在那里,那么在你的代码中没有作者意味着什么?看看
    std::optional
    @Evg author是一个用户。在剩下的代码中,当分配图书信息时,我可以选择一个用户(用户对象)我以前定义为作者。这意味着我也可以将作者保留为空,并且不分配任何用户(对象)在C++中没有特殊的空值,比如在其他一些编程语言中。默认构造的代码<代码>用户<代码>可以被认为是空的,但这可能是一个很差的选择。最好,定义<代码>作者<代码>:<代码> STD::可选作者;<代码>,然后检查<代码>(作者){…}。
    @NayaCruiser:如果您实现了适当的运算符,那么您的不等式检查实际上可能是有效的代码。但是,我认为这在语义上是不清楚的,所以最好遵循Evg的建议,使用其他方法。