有什么方法可以“强制”函数参数遵循 C++ 中的某些规则?
举例来说,假设我想编写一个函数来计算数学函数的 n 次导数。假设函数的签名是这样的:

double computeNthDerivative(double x, unsigned int n);

现在,假设我想禁止用户为 n 输入 0。如果用户输入为 0,我可以只使用 assert 或测试值和 throw 异常。
但是有没有其他方法可以做这种事情?

编辑:条件将在编译时设置,但检查必须在运行时完成。

最佳答案

class Policy {
private:
    String myPolicy;
public :
    Policy(String regEx) : myPolicy(regEx) {
    }

    void verify(int n) {
       regEx strtok , sprintf, blah, blah n
};

class Asserted {
private:
    Policy policy;
public:
    Asserted(Policy policy, int n) throw AAAHHHHH {
        policy.verify(n);
    }
};

然后最后
Asserted assert = new Asserted(Policy("[1-9]", 8))
double computeNthDerivative(2.6, assert);

关于c++ - 强制函数参数匹配某个规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30083721/

10-11 00:21