让我们想象一下这会编译。
你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 的东西。