Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
名称空间中具有相同名称的2个类 我已经回到C++学习一些老大学课程,现在我正在学习参数多态性,以及创建自己的命名空间。 这个练习说明我必须创建一个名为Federation的名称空间,该名称空间有一个名为Ship的类,该类接受值和一个永不更改的默认值。 在联邦名称空间中还有一个星际舰队名称空间,其中我们还有一个Ship类,唯一的区别是之前声明的默认值可以由用户指定_C++_Class_Namespaces - Fatal编程技术网

名称空间中具有相同名称的2个类 我已经回到C++学习一些老大学课程,现在我正在学习参数多态性,以及创建自己的命名空间。 这个练习说明我必须创建一个名为Federation的名称空间,该名称空间有一个名为Ship的类,该类接受值和一个永不更改的默认值。 在联邦名称空间中还有一个星际舰队名称空间,其中我们还有一个Ship类,唯一的区别是之前声明的默认值可以由用户指定

名称空间中具有相同名称的2个类 我已经回到C++学习一些老大学课程,现在我正在学习参数多态性,以及创建自己的命名空间。 这个练习说明我必须创建一个名为Federation的名称空间,该名称空间有一个名为Ship的类,该类接受值和一个永不更改的默认值。 在联邦名称空间中还有一个星际舰队名称空间,其中我们还有一个Ship类,唯一的区别是之前声明的默认值可以由用户指定,c++,class,namespaces,C++,Class,Namespaces,代码如下: 联合会 编译时出现以下错误:prototye for Federation::Ship::Shipint,int,std::\uu cxx11::string,int与Federation::Ship中的任何类都不匹配 我完全不明白这意味着什么,当我查看hpp文件中的函数时,它们似乎都是正确的,所以我真的不明白在这种情况下我到底做错了什么。这与名称空间无关。在标题中声明具有特定原型的任务: Ship(int length, int width, std::string name);

代码如下:

联合会

编译时出现以下错误:prototye for Federation::Ship::Shipint,int,std::\uu cxx11::string,int与Federation::Ship中的任何类都不匹配


我完全不明白这意味着什么,当我查看hpp文件中的函数时,它们似乎都是正确的,所以我真的不明白在这种情况下我到底做错了什么。

这与名称空间无关。在标题中声明具有特定原型的任务:

Ship(int length, int width, std::string name);
然后在实现文件中随机添加带有默认参数的参数:

Federation::Ship::Ship(int length, int width, string name, int speed = 1)
参数类型是任何函数或构造函数签名的一部分。因此,声明和定义不匹配。在标头中声明额外参数以及默认参数

Ship(int length, int width, string name, int speed = 1);
// and
Federation::Ship::Ship(int length, int width, string name, int speed)

这与名称空间无关。在标题中声明具有特定原型的任务:

Ship(int length, int width, std::string name);
然后在实现文件中随机添加带有默认参数的参数:

Federation::Ship::Ship(int length, int width, string name, int speed = 1)
参数类型是任何函数或构造函数签名的一部分。因此,声明和定义不匹配。在标头中声明额外参数以及默认参数

Ship(int length, int width, string name, int speed = 1);
// and
Federation::Ship::Ship(int length, int width, string name, int speed)

应在头文件而不是源文件中定义默认参数。将默认参数放在头文件中Federation::Ship构造函数的签名中。谢谢,这很有效!不是问题,但不要把问题放在一边;在名称空间之后。您不需要它,而且它更容易发现}是关闭名称空间还是类声明…在类定义之后,您需要;在第二次发货后,默认参数应该在头文件而不是源文件中定义。将默认参数放在头文件中Federation::Ship构造函数的签名中。谢谢,这很有效!不是问题,但不要把问题放在一边;在名称空间之后。您不需要它,而且它更容易发现}是关闭名称空间还是类声明…在类定义之后,您需要;在第二次发布之后,它将丢失该类,在我在主服务器上声明该类后,默认情况下该类必须具有该参数。如果我在原型上添加一个int速度,我会得到一个错误,告诉我构造函数需要另一个参数。@SoftJellyfish-默认参数必须仅出现在声明中。删除定义中的默认参数,但不删除定义中的参数。一旦我在main上声明该类,该类在默认情况下必须具有该参数。如果我在原型上添加一个int速度,我会得到一个错误,告诉我构造函数需要另一个参数。@SoftJellyfish-默认参数必须仅出现在声明中。删除定义中的默认参数,但不删除参数。