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);

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...