让我们想象一下这会编译。
你Word
有 100 个sentences
,每个Sentence
有 200 个words
(这里是 20000Word
秒),每个有 100 个sentences
(这里是 2000000Sentence
秒),每个有 200 个words
(400000000 Words
),每个......
我想我可以在这里停下来。你可能会意识到这不是你想要的。
您需要重新考虑您的结构,并且应该考虑此类代码的用户或维护者可能期望的内容。
一个包含多个单词的句子-> 好吧,这是合乎逻辑的。
包含句子的单词?-> 为什么一个词应该包含句子?没有人会期望会是这样。
此外:如果您没有一个只处理始终包含200个单词的句子的项目,您可以考虑使用动态记忆结构,例如std::vector
.
class Sentence
{
private:
int wordNum;
std::vector<Word> words;
public:
...
};
如果需要关系,您当然可以自由使用指针。
如果你想要某种自动化的生命周期(如果你手头有 C++11 能力),你可以例如使用std::shared_ptr
从句子到单词的向量。-> 每个包含特定单词的句子都有自己共享的指向该单词对象的 ptr。如果包含特定单词的所有句子超出范围 / 都被销毁,则该单词也将被删除。
我仍然建议坚持使您能够使用 RAII 的东西。