gpt4 book ai didi

c++ - 自动铸件

转载 作者:太空狗 更新时间:2023-10-29 23:48:30 26 4
gpt4 key购买 nike

<分区>

我目前正在遭受脑放屁。我以前做过,但我不记得确切的语法,也看不到我写的代码,因为我当时在另一家公司工作。我有这样的安排:

class P
{
// stuff
};

class PW : public P
{
// more stuff
};

class PR : public P
{
// more stuff
};

class C
{
public:
P GetP() const { return p; }
private:
P p;
};

// ...
P p = c.GetP( ); // valid
PW p = c.GetP( ); // invalid
PR p = c.GetP( ); // invalid
// ...

现在我想让 P 与 PW 和 PR 可以互换(因此 PW 和 PR 可以互换)。我可能可以摆脱强制转换,但仅在这个模块中,此代码更改就发生了很多次。我很确定它是一个运算符(operator),但我记不得是什么了。

如何使用最少的代码使 P 与 PW 和 PR 互换?

更新:提供更多说明。 P 代表 Project,R 和 W 分别代表 Reader 和 Writer。 Reader 拥有的只是用于加载的代码——没有变量,而 writer 拥有用于简单 Writing 的代码。它需要分开,因为阅读和写作部分有各种管理器类和对话框,这不是项目真正关心的是项目文件的操作。

更新:我还需要能够调用 P 和 PW 的方法。所以如果 P 有一个方法 a() 和 PW 作为方法调用 b() 那么我可以:

PW p = c.GetP();
p.a();
p.b();

基本上是为了让转换透明。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com