主题:[讨论]请大家帮我看看这个程序的错误
这个程序究竟是哪里的问题 为什么会有如下错误中的几个主要错误呢 尤其是这个错误 缺少函数标题(是否是老式的形式表?)
请各位给我指点一下啊 谢谢了 只要有见地诚心要求各位发表高见 谢谢啦
#pragma once
#include<cstdlib>
#ifndef MAIN_SAVITCH_5
#define MAIN_SAVITCH_5
namespace main_savitch_5
{
template<class Item>
class node
{
public:
typedef Item value_type;
node(node* init_link=NULL,value_type init_data=0)
{
data_field=init_data;
link_field=link_field;
}
node(const value_type& init_data=value_type(),node* init_link=NULL);
~node(void);
node* link()
{
return link_field;
}
void set_data(const value_type& new_data)
{
data_filed=new_data;
}
void set_link(const node* new_link)
{
link_filed=new_link;
}
value_type data() const
{
return data_field;
}
const node* link() const
{
return link_field;
}
private:
value_type data_field;
node* link_field;
};
template<class Item>
size_t list_length(const node<Item>* head_ptr);
template<class Item>
void list_head_insert(node<Item>*& head_ptr,const Item& entry);
template<class Item>
void list_insert(node<Item>* previous_ptr,const Item& entry);
template<class Item>
node<Item>* list_search(node<Item>* head_ptr,const Item& target);
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target);
template<class Item>
node<Item>* list_locate(node<Item>* head_ptr,std::size_t position);
template<class Item>
const node<Item>* list_locate(const node<Item>* head_ptr,const std::size_t position);
template<class Item>
void list_head_remove(node<Item>*& head_ptr);
template<class Item>
void list_remove(node<Item>* previous_ptr);
template<class Item>
void list_clear(node*& head_ptr);
template<class Item>
void list_copy(const node* source_ptr,node*& head_ptr,node*& tail_ptr);
}
#include"node.cpp"
#endif
#include "node.h"
#include<iostream>
#include<cstdlib>
using namespace std;
namespace main_savitch_5
{
template<class Item>
size_t list_length(const node<Item>* head_ptr)
{
const node<Item>* cursor;
size_t answer;
answer=0;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
++answer;
return answer;
}
template<class Item>
void list_head_insert(node<Item>*& head_ptr,const Item& entry)
{
head_ptr=new node<Item>(head_ptr,entry);
}
template<class Item>
void list_insert(node<Item>* previous_ptr,const Item& entry)
{
node<Item>* insert_ptr;
insert_ptr=new node<Item>;
insert_ptr->set_data(entry);
insert_ptr->set_link(previous_ptr->link());
previous_ptr->set_link(insert_ptr);
}
template<class Item>
node* list_search(node<Item>* head_ptr,const Item& target)
{
node* cursor;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
if(target==cursor->data())
return cursor;
return NULL;
}
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target)
{
const node<Item>* cursor;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
if(target==cursor->data())
return cursor;
return NULL;
}
template<class Item>
node<Item>* list_search(node<Item>* head_ptr,const Item& target);
{
//
}
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target);
{
//
}
template<class Item>
void list_copy(const node* source_ptr,node*& head_ptr,node*& tail_ptr)
{
head_ptr=NULL;
tail_ptr=NULL;
if(source-ptr==NULL)
return;
list_head_insert(head_ptr,source_ptr->data());
tail_ptr=head_ptr;
source_ptr=source_ptr->link();
while(source!=NULL)
{
list_insert(tail_ptr,source_ptr->data());
tail_ptr=tail_ptr->link();
source=source->link();
}
}
template<class Item>
void list_head_remove(node<Item>*& head_ptr)
{
node<Item> *remove_ptr;
remove_ptr=head_ptr;
head_ptr=head_ptr->link();
delete remove_ptr;
}
template<class Item>
void list_remove(node<Item>* previous_ptr)
{
node<Item> *remove_ptr;
remove_ptr=previous_ptr_link();
previous_ptr->set_link(remove_ptr->link());
delete remove_ptr;
}
template<class Item>
void list_clear(node*& head_ptr)
{
while(head_ptr!=NULL)
list_head_remove(head_ptr);
}
}
>------ 已启动生成: 项目: 节点, 配置: Debug Win32 ------
1>正在编译...
1>node.cpp
1>e:\vs2008\c++\节点\节点\node.h(73) : error C2955: “main_savitch_5::node”: 使用类 模板 需要 模板 参数列表
1> e:\vs2008\c++\节点\节点\node.h(10) : 参见“main_savitch_5::node”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(57) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(63) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(17) : error C2995: “size_t main_savitch_5::list_length(const main_savitch_5::node<Item> *)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(46) : 参见“main_savitch_5::list_length”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(23) : error C2995: “void main_savitch_5::list_head_insert(main_savitch_5::node<Item> *&,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(49) : 参见“main_savitch_5::list_head_insert”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(33) : error C2995: “void main_savitch_5::list_insert(main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(52) : 参见“main_savitch_5::list_insert”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(43) : error C2995: “main_savitch_5::node *main_savitch_5::list_search(main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.cpp(36) : 参见“main_savitch_5::list_search”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(53) : error C2995: “const main_savitch_5::node<Item> *main_savitch_5::list_search(const main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(58) : 参见“main_savitch_5::list_search”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(57) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(63) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(83) : error C2995: “void main_savitch_5::list_copy(const main_savitch_5::node *,main_savitch_5::node *&,main_savitch_5::node *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(76) : 参见“main_savitch_5::list_copy”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(92) : error C2995: “void main_savitch_5::list_head_remove(main_savitch_5::node<Item> *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(67) : 参见“main_savitch_5::list_head_remove”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(100) : error C2995: “void main_savitch_5::list_remove(main_savitch_5::node<Item> *)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(70) : 参见“main_savitch_5::list_remove”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(106) : error C2995: “void main_savitch_5::list_clear(main_savitch_5::node *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(73) : 参见“main_savitch_5::list_clear”的声明
1>生成日志保存在“file://e:\vs2008\C++\节点\节点\Debug\BuildLog.htm”
1>节点 - 14 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
请各位给我指点一下啊 谢谢了 只要有见地诚心要求各位发表高见 谢谢啦
#pragma once
#include<cstdlib>
#ifndef MAIN_SAVITCH_5
#define MAIN_SAVITCH_5
namespace main_savitch_5
{
template<class Item>
class node
{
public:
typedef Item value_type;
node(node* init_link=NULL,value_type init_data=0)
{
data_field=init_data;
link_field=link_field;
}
node(const value_type& init_data=value_type(),node* init_link=NULL);
~node(void);
node* link()
{
return link_field;
}
void set_data(const value_type& new_data)
{
data_filed=new_data;
}
void set_link(const node* new_link)
{
link_filed=new_link;
}
value_type data() const
{
return data_field;
}
const node* link() const
{
return link_field;
}
private:
value_type data_field;
node* link_field;
};
template<class Item>
size_t list_length(const node<Item>* head_ptr);
template<class Item>
void list_head_insert(node<Item>*& head_ptr,const Item& entry);
template<class Item>
void list_insert(node<Item>* previous_ptr,const Item& entry);
template<class Item>
node<Item>* list_search(node<Item>* head_ptr,const Item& target);
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target);
template<class Item>
node<Item>* list_locate(node<Item>* head_ptr,std::size_t position);
template<class Item>
const node<Item>* list_locate(const node<Item>* head_ptr,const std::size_t position);
template<class Item>
void list_head_remove(node<Item>*& head_ptr);
template<class Item>
void list_remove(node<Item>* previous_ptr);
template<class Item>
void list_clear(node*& head_ptr);
template<class Item>
void list_copy(const node* source_ptr,node*& head_ptr,node*& tail_ptr);
}
#include"node.cpp"
#endif
#include "node.h"
#include<iostream>
#include<cstdlib>
using namespace std;
namespace main_savitch_5
{
template<class Item>
size_t list_length(const node<Item>* head_ptr)
{
const node<Item>* cursor;
size_t answer;
answer=0;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
++answer;
return answer;
}
template<class Item>
void list_head_insert(node<Item>*& head_ptr,const Item& entry)
{
head_ptr=new node<Item>(head_ptr,entry);
}
template<class Item>
void list_insert(node<Item>* previous_ptr,const Item& entry)
{
node<Item>* insert_ptr;
insert_ptr=new node<Item>;
insert_ptr->set_data(entry);
insert_ptr->set_link(previous_ptr->link());
previous_ptr->set_link(insert_ptr);
}
template<class Item>
node* list_search(node<Item>* head_ptr,const Item& target)
{
node* cursor;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
if(target==cursor->data())
return cursor;
return NULL;
}
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target)
{
const node<Item>* cursor;
for(cursor=head_ptr;cursor!=NULL;cursor=cursor->link())
if(target==cursor->data())
return cursor;
return NULL;
}
template<class Item>
node<Item>* list_search(node<Item>* head_ptr,const Item& target);
{
//
}
template<class Item>
const node<Item>* list_search(const node<Item>* head_ptr,const Item& target);
{
//
}
template<class Item>
void list_copy(const node* source_ptr,node*& head_ptr,node*& tail_ptr)
{
head_ptr=NULL;
tail_ptr=NULL;
if(source-ptr==NULL)
return;
list_head_insert(head_ptr,source_ptr->data());
tail_ptr=head_ptr;
source_ptr=source_ptr->link();
while(source!=NULL)
{
list_insert(tail_ptr,source_ptr->data());
tail_ptr=tail_ptr->link();
source=source->link();
}
}
template<class Item>
void list_head_remove(node<Item>*& head_ptr)
{
node<Item> *remove_ptr;
remove_ptr=head_ptr;
head_ptr=head_ptr->link();
delete remove_ptr;
}
template<class Item>
void list_remove(node<Item>* previous_ptr)
{
node<Item> *remove_ptr;
remove_ptr=previous_ptr_link();
previous_ptr->set_link(remove_ptr->link());
delete remove_ptr;
}
template<class Item>
void list_clear(node*& head_ptr)
{
while(head_ptr!=NULL)
list_head_remove(head_ptr);
}
}
>------ 已启动生成: 项目: 节点, 配置: Debug Win32 ------
1>正在编译...
1>node.cpp
1>e:\vs2008\c++\节点\节点\node.h(73) : error C2955: “main_savitch_5::node”: 使用类 模板 需要 模板 参数列表
1> e:\vs2008\c++\节点\节点\node.h(10) : 参见“main_savitch_5::node”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(57) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(63) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(17) : error C2995: “size_t main_savitch_5::list_length(const main_savitch_5::node<Item> *)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(46) : 参见“main_savitch_5::list_length”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(23) : error C2995: “void main_savitch_5::list_head_insert(main_savitch_5::node<Item> *&,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(49) : 参见“main_savitch_5::list_head_insert”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(33) : error C2995: “void main_savitch_5::list_insert(main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(52) : 参见“main_savitch_5::list_insert”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(43) : error C2995: “main_savitch_5::node *main_savitch_5::list_search(main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.cpp(36) : 参见“main_savitch_5::list_search”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(53) : error C2995: “const main_savitch_5::node<Item> *main_savitch_5::list_search(const main_savitch_5::node<Item> *,const Item &)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(58) : 参见“main_savitch_5::list_search”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(57) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(63) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\vs2008\c++\节点\节点\node.cpp(83) : error C2995: “void main_savitch_5::list_copy(const main_savitch_5::node *,main_savitch_5::node *&,main_savitch_5::node *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(76) : 参见“main_savitch_5::list_copy”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(92) : error C2995: “void main_savitch_5::list_head_remove(main_savitch_5::node<Item> *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(67) : 参见“main_savitch_5::list_head_remove”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(100) : error C2995: “void main_savitch_5::list_remove(main_savitch_5::node<Item> *)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(70) : 参见“main_savitch_5::list_remove”的声明
1>e:\vs2008\c++\节点\节点\node.cpp(106) : error C2995: “void main_savitch_5::list_clear(main_savitch_5::node *&)”: 函数模板已经定义
1> e:\vs2008\c++\节点\节点\node.h(73) : 参见“main_savitch_5::list_clear”的声明
1>生成日志保存在“file://e:\vs2008\C++\节点\节点\Debug\BuildLog.htm”
1>节点 - 14 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========