Node struct(C ++语法)没有合适的默认构造函数


No Appropriate Default Constructor For Node struct (C++ Syntax)

无误差

1
2
3
4
5
6
7
8
9
10
// list.h
//...
list::node::node(const winery &winery)
{
}
void list::insert(const winery& winery)
{
    //const char *Names = winery.getName();
    node *new_node = new node( winery );
}

添加list::node::node(const winery&winery)函数到list.cpp文件启用节点的分配。

但是,它强制我向Winery类添加一个dfault构造函数:

1
2
3
4
5
6
7
8
class winery
{
public :
    winery(const char * const name, const char * const location,
const int acrces, const int rating);
    winery();
    virtual ~winery(void);
//...

从而使havinvg提供默认ctor的主体。有没有一种方法可以让它在不声明和定义酿酒厂类的默认ctor的情况下工作?


我在一个小城市,这是混淆的问题。你为什么需要两个默认的构造一个节点?使用"supplied constructor,需要一winery。像fbereton suggested在他的回答。

1
node* aNode = new node(aWinery);

你需要使用一个节点的指针(node*)不是一个参考节点(node&)既然你都将是没有管理的内存数据结构的战略。也,它是不是一个好的想法上的头两个指针来开始的两个空的insert函数

1
2
 headByName   = NULL;
 headByRating = NULL;

你想做的constructor。否则,你失去的节点在你每一次你插入的诡计。

但对你的错误描述。它会帮助你的邮件,如果真的要你是错误的,但它听起来的节点(教育winery &;)constructor冰槽和连接器定义的任何地方,你想定义它。它听起来你认为你是不允许两个定义,因为constructor《作业指导mandate你使用指定定义的节点。然而,我认为,我们均指示,你只需要使用特定的头struct定义的节点。这是,你是给定节点的规范,但你需要自己实施的细节。

其中的一个细节是constructor执行。你不需要修改的《constructor头两个定义。在一个你.cpp档案(list.cpp,main.cpp,winery.cpp,这没关系,下面的函数定义)

1
2
3
4
5
6
list::node::node(const winery& aWinery)
{
    item = aWinery;
    nextByName = NULL;
    nextByRating = NULL;
}

现在constructor冰,应该定义RESOLVE的链接错误。作为一个方面说明,很多你有这个函数的参数:const winery& winery签名。现在我不知道到底什么是C++标准中有两个是这样说的,但我想它是非法的.有一个变量和两个A型用相同的名称。即使你做的是让你的编译器,它是confusing。


给定的码以上,读我的配置:

1
node* new_node = new node(winery);

然后,这是一部correctly inserting物进入你的new_node双列表名称和等级)和迭代的每个城市分别设置correctly的指针。


这两个specify winery这样一constructor默认是不必要的。

1:specify选项的默认值为每个参数在其constructor:

1
2
3
4
winery(const char * const name ="",
       const char * const location ="",
       const int acrces = -1,
       const int rating = -1);

注意,如果你走这路我可以添加支持两个代码检查并确保你的winery冰的有效数据。

方案二:两个其他选项eliminate冰的两个案例,requires constructor的违约。找到它/它们,把默认的"constructor private太空的winery struct鸭,在emits看到编译的错误。那些instances大学wineryconstructor将需要有效的初始数据。