gpt4 book ai didi

c++ - 使用 C++ 如何从 void 函数传递值?

转载 作者:行者123 更新时间:2023-11-30 05:36:22 24 4
gpt4 key购买 nike

我在一个类中有两个 C++ 函数:

void Attribute::setIndex(int inIndex) {
if (inIndex < 0) {
index = 0;
}
else if (inIndex >= MAX_NUM_ATTRIBUTES) {
index = MAX_NUM_ATTRIBUTES - 1;
}
else {
index = inIndex;
}
}

int Attribute::getValueWithinRange(int value) {
value = setIndex(value);
return value;
}

第二个函数应该使用 setIndex 将“值”设置为正确的数字并返回它。但是,由于第一个函数是一个 void 函数,我不能像上面那样简单地传递值。我应该通过引用还是有什么建议?非常感谢。

最佳答案

我想指出的是,如果你正在学习 C++,你应该首先尝试学习模型案例,有时仓促的例子并不是最好的方法,但我们开始了:


改变setIndex返回int,我的最爱;

int Attribute::setIndex(int inIndex)
{
if (inIndex < 0)
{
index = 0;
}
else if (inIndex >= MAX_NUM_ATTRIBUTES)
{
index = MAX_NUM_ATTRIBUTES - 1;
}
else
{
index = inIndex;
}

return index;
}


int Attribute::getValueWithinRange(int value)
{
value = setIndex(value);
return value;
}

改变getValueWithinRange返回索引,两个方法在一个类中,它们共享对索引的访问;

int Attribute::getValueWithinRange(int value)
{
setIndex(value);
return index;
}

给它一个引用是可行的,但是你不能将引用设置为 null 除非使用一个技巧并且它会不必要地需要另一个方法,所以指针使它不那么困惑:

int Attribute::setIndex(int inIndex, int* ret_index = nullptr)
{
if (inIndex < 0)
{
index = 0;
}
else if (inIndex >= MAX_NUM_ATTRIBUTES)
{
index = MAX_NUM_ATTRIBUTES - 1;
}
else
{
index = inIndex;
}

if (ret_index != nullptr) *ret_index = index;

return index;
}


int Attribute::getValueWithinRange(int value)
{
int retvalue;
setIndex(value); // use it like this when returning value is not needed
setIndex(value, &retvalue);

return retvalue;
}

关于c++ - 使用 C++ 如何从 void 函数传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com