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

前端之家收集整理的这篇文章主要介绍了c – 如果参数条件为真,则阻止执行返回函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
就像在标题上说的那样,我想知道是否有可能阻止执行功能.在我的特定情况下,我正在尝试创建一个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;
}

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

谢谢你告诉我,如果有办法……或不!

解决方法

你至少可以做4件事.

>从函数中返回已知的错误值.例如. -1如果输入值不好.
>提出异常.
>更改函数以通过引用传递输出并返回错误代码.
>强制用户获得强类型枚举类的点.

选项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);
原文链接:https://www.f2er.com/c/239483.html

猜你在找的C&C++相关文章