就像在标题上说的那样,我想知道是否有可能阻止执行功能.在我的特定情况下,我正在尝试创建一个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.jb51.cc/c/239483.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。