就像在标题上说的那样,我想知道是否有可能阻止执行功能.在我的特定情况下,我正在尝试创建一个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);