gpt4 book ai didi

c++ - 返回指向对象的指针(C++ 模板)错误

转载 作者:太空狗 更新时间:2023-10-29 20:30:14 25 4
gpt4 key购买 nike

有人要求我将大学作业的三个类切换到模板,以使它们更通用,但我在尝试从模板函数返回指向对象的指针时遇到问题。

编译器:GCC 版本 - 3.4.4 (Cygwin)

这是 (.h):

  namespace node_class
{
template <class Item>
class node
{
public:

// CONSTRUCTOR
node(const Item& initial_data = 0, node* initial_link = NULL);
~node(){}

// MUTATING MEMBER FUNCTIONS
void set_data(const Item& new_data);
void set_link(node* new_link);

// NON-MUTATING MEMBER FUNCTIONS
const node* link(void) const;
node* link(void);

const Item& data(void) const;
Item& data(void);

private:

Item data_field;
node* next_field;
};
}

下面是返回对象指针的两个函数实现:

 template<class Item>
const node<Item>::node* node<Item>::link(void) const
{
return(next_field);
}

template<class Item>
node<Item>::node* node<Item>::link(void)
{
return(next_field);
}

这是我在尝试编译时不断抛出的错误:

$ g++ -Wall node.h

node.h:73: error: expected init-declarator before '*' token
node.h:73: error: expected ';' before '*' token
node.h:79: error: expected constructor, destructor, or type conversion before '*' token
node.h:79: error: expected ';' before '*' token

目前,我有一个单独的 (.h) 和 (.template),其中 .template 由头文件中的 include 指令包含;但是,即使模板函数的实现像它应该的那样包含在 (.h) 中,我仍然收到这些相同的错误消息。

任何帮助都会很棒,谢谢。

最佳答案

node<Item>::node不是一种类型。让你的返回类型node<Item>* .

方法声明应该是:

const node<Item>* link(void) const;
node<Item>* link(void);

这些方法的定义应该是:

template<class Item>
const node<Item>* node<Item>::link(void) const
{
return(next_field);
}

template<class Item>
node<Item>* node<Item>::link(void)
{
return(next_field);
}

关于c++ - 返回指向对象的指针(C++ 模板)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591582/

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