所以,我有四门课:
App - 这代表应用程序的入口点
MainPage - 这代表主屏幕
Authenticator - 这表示用于身份验证的助手/实用程序类
LoginPage - 这代表一个登录屏幕。
App、MainPage 和 LoginPage 都有指向 Authenticator 的指针,实际上,它是在用户启动应用程序、到达主屏幕并提示登录时从 App、MainPage、LoginPage 传递的。 App创建MainPage,如果MainPage需要登录,则创建LoginPage。Authenticator 指针在创建时传递。
假设 Authenticator 看起来像这样:
class Authenticator {
public:
std::string GetToken() const;
void Login(std::string username, std::string pass);
}
现在,App 将创建一个指向 Authenticator 的普通非 const 指针,但因为我不希望 MainPage 能够修改 Authenticator,我希望它存储一个指向它的 const 指针(即它只能调用 const 成员函数它)。但是,我希望 LoginPage 能够调用非 const 成员函数,例如 Login(),因此当我将 Authenticator 从 MainPage 传递到 LoginPage 时,我需要抛弃 const-ness。
我的问题是:在这种情况下这样做不好吗?不允许修改对象的类是否应该能够将其传递给可以修改的类?还是让 App 同时创建 MainPage 和 LoginPage 并为它们提供相同的 Authenticator 会更好吗?我对这个选项的唯一问题是我主动创建了一个 LoginPage,而不是懒惰,我更喜欢懒惰地做。
提前致谢。