gpt4 book ai didi

c++ - 如果参数条件为真,则阻止执行返回函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:40 26 4
gpt4 key购买 nike

正如标题所说,我想知道是否有可能停止执行一个函数。在我的特殊情况下,我试图制作一个 operator[] 并在参数中给出的值太高时阻止 utilisator 使用它:

在 .h 中:

class Vec4
{
float x,y,z,w;

public:

float operator[](const unsigned int i);
}

在 .cpp 中:

float Vec4::operator[](const unsigned int i)
{
if(i == 0) return x;
if(i == 1) return y;
if(i == 2) return z;
if(i == 3) return w;
}

如果 i >=4,我想“破坏”这个函数目前我只是做一个控制台输出并返回 0.0f

谢谢你告诉我是否有办法......或没有!

最佳答案

你至少可以做 4 件事。

  1. 从函数中返回一个已知的错误值。例如。 -1 如果输入值不好。
  2. 提出一个异常(exception)。
  3. 更改函数以通过引用传递输出并返回错误代码。
  4. 强制用户使用强类型enum class 来理解重点。

选项 1

float Vec4::operator[](const unsigned int i) {
switch (i)
case 0:
return x;
...
default:
return nan;

选项 2

default:
throw InvalidInputException;

选项 3

typedef ErrCode int;
const int ERROR = -1;
const int SUCCESS = 1;
...
ErrCode Vec4::getPoint(const unsigned int i, float &ouptut) {
...
switch (i)
case 0:
output = x;
return SUCCESS;
default:
return ERROR;

选项 4 (c++11)

class Vec4 {
...
public:
enum class VecMem {X, Y, Z, W};
float Vec4::getPoint(VecMem member) {
switch (member):
case X:
return x;
...

用法:

Vec4.getPoint(Vec4::VecMem::X); 

关于c++ - 如果参数条件为真,则阻止执行返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526991/

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