【发布时间】:2015-01-31 02:47:35
【问题描述】:
所以我一直在研究一个函数类,默认情况下,我可以这样做,并且它可以工作:
int main(){
function f("x^2+1");
cout<<f(3)<<endl;
return 0;
}
“假设正确的包含和命名空间”
无论如何,我希望能够传入多个变量,甚至说明这些变量是什么;
function f("x^2+y^2",x,y); // it doesn't really matter if it's x, 'x', or "x"
cout<<f(3,4)<<endl; // input 3 as x, and 4 as y
我相当肯定我可以使用可变参数函数为构造函数找出一些东西,甚至可以正确解决,但是有没有办法强制 operator() 参数恰好取 2 个值?
我只是在研究可变参数函数,因为它们确实是我在 c++ 中看到的第一个可以接受多个参数的东西,所以如果以其他方式更好,我完全赞成。
【问题讨论】:
-
我的建议是从一个更简单的可变参数模板用例开始,了解它们的正常使用方式。为了解决这个特殊问题,您需要将参数部分应用于函数表示(因为可变参数模板是递归的),这不是很简单。
-
我会告诫不要为此使用普通的 C 可变参数函数,因为它们不是严格安全的。 (请参阅 printf 漏洞。)