gpt4 book ai didi

C++ 嵌套类的新实例

转载 作者:行者123 更新时间:2023-11-28 06:50:14 27 4
gpt4 key购买 nike

这是我的代码

template <typename T>
struct Item
{
T* Product;
Item *next;

Item(T*);
};

template <typename T>
Item<T>::Item(T *prod)
{
this->Product = prod;
this->next = nullptr;
}

template <typename T>
class Catalog
{
private:
Item<T> *first;
Item<T> *last;
unsigned int count;
public:
struct Item; //i need Item as nested structure

void Add(T*);
};

template <typename T>
void Catalog<T>::Add(T *ptr)
{
//only for simplification, algorithm I already have

this->first = new Item<T>(ptr);
//or
this->last = new Item<T>(ptr);

}

我不知道如何将新项目添加到我的类(class)目录中。如果 Item 不是嵌套结构,我可以简单地使用 new Item<T>(ptr)

有什么办法吗?这是我的学校项目,我需要 Item 作为嵌套结构。

谢谢,抱歉我的英语不好。

最佳答案

问题是您要声明两个不同的 Item .这首先是一个非嵌套的模板结构,你(可能)不想用,二是嵌套不完整结构。第二个是您可能想要使用的那个,但是它不完整,因此您无法创建它的实例。什么你应该做的是把 Item 的整个定义在里面类 Catalog ,而不仅仅是前向定义。 (和不要在那里将其定义为模板:您想要的类型是 Catalog<T>::Item ,而不是 Catalog<T>:Item<U> .) 然后,当然,在类模板里面,它是new Item (而不是 new
Item<T>
);课外是new Catalog<T>::Item .

关于C++ 嵌套类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086988/

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