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); |
你需要使用一个节点的指针(
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的链接错误。作为一个方面说明,很多你有这个函数的参数:
给定的码以上,读我的配置:
1 | node* new_node = new node(winery); |
然后,这是一部correctly inserting物进入你的
这两个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); |
注意,如果你走这路我可以添加支持两个代码检查并确保你的
方案二:两个其他选项eliminate冰的两个案例,requires constructor的违约。找到它/它们,把默认的"constructor