C++ C++;通行证;“违约”;结构到功能
我正试图弄清楚如何在不初始化结构的情况下将默认结构值“传递”给函数,这就是我现在所拥有的:C++ C++;通行证;“违约”;结构到功能,c++,C++,我正试图弄清楚如何在不初始化结构的情况下将默认结构值“传递”给函数,这就是我现在所拥有的: struct Color3i { Color3i(): r(255), g(255), b(255) { } int r, g, b; }; void CCore::Color(Color3i color) { double red, green, blue; red = color.r / 255.0f; green = color.g / 255.0f;
struct Color3i
{
Color3i(): r(255), g(255), b(255) { }
int r, g, b;
};
void CCore::Color(Color3i color)
{
double red, green, blue;
red = color.r / 255.0f;
green = color.g / 255.0f;
blue = color.b / 255.0f;
glColor3f(red,green,blue);
}
Color3i defaultColor;
Core.Color(defaultColor);
我试图做的事情看起来是这样的,但这显然不起作用:
Core.Color(Color3i defaultColor);
如何在不使用Color3i defaultColor初始化的情况下将结构传递给函数;这可能吗
很抱歉,如果以前有人问过这个问题,但我尝试搜索互联网站,但找不到任何东西(可能我使用了错误的关键字进行搜索)您应该可以这样做:
Core.Color(Color3i());
也就是说,调用默认构造函数来初始化一个新实例,并传递它。有几种方法可以传递希望颜色为默认颜色的信息。注释中已经给出了最简单的一个:
Core.Color(Color3i())
如果希望代码更短,可以在调用的函数参数中设置默认值:
void CCore::Color(Color3i color = Color3i()) { ... }
....
Core.Color(); //no argument = default
如果希望更具描述性,可以在颜色中创建一个静态函数作为构造函数:
struct Color3i {
Color3i(): r(255), g(255), b(255) { }
int r, g, b;
static Colo3i defaultColor() { return Color3i(); }
};
...
Core.Color(Color3i::defaultColor());
最后,如果要控制可以使用默认颜色的上下文,可以创建新的虚拟枚举类型并重载函数以显式接受默认版本:
enum DefaultColorEnum {
DefaultColor
};
void CCore::Color(Color3i color) {
... //normal code
}
void CCore::Color(DefaultColorEnum) { //ignore the parameter value, the type is what matters
Color(Color3i()); //invoke the generic version with default value
}
...
Core.Color(DefaultColor);
这一切都取决于你真正想要实现什么…这里有什么问题?看起来它应该做你想做的。你得到的color.r
值是多少?我想你是在试图避免使用Color3i defaultColor代码>并将该变量传递给函数?您应该能够使用Core.Color(Color3i())代码>关于red=color.r/255.0f
:分子是int
,分母是afloat
,分配给类型adouble
。这不是一个直接的问题,但像这样的混合类型可以给你gyp。@Bathseba谢谢你的输入,我想知道我自己在这方面是否也有问题谢谢这正是我想要的。我在学校有C++课程,但我一直在自己的自由编程上。我们还没有接触到结构之类的东西。顺便说一句,用大写字母开头变量名是不好的:语言和编译器根本不在乎,但是其他读你代码的程序员会希望Core
是一个类型名。谢谢你的提示。CCore是我的一个类,我在中将Core定义为CCore Core(Core在我的应用程序中处理渲染和输入)。我基本上一直在互联网上阅读文章,并与之同行,有时会感到困惑,因为有些文章推荐了一些东西,而另一些文章推荐了其他东西,但两者都产生了相同的结果。在互联网研究之后,我们的老师因为某些原因在我们的C++课程中引入了C语言,这使得我甚至在困惑中困惑,因为我想保持纯粹的C++,感谢详细的注释。我在学校里有C++,但还没走多远。我一直在做自己的编程在空闲时间。也许我在C++方面有些头晕,但我至少对它很感兴趣。