假设我有一个像intarr[N]这样的整数数组然后说arr[i]来自一个很小的域(例如1-10)。假设我还有一个具有通用接口(interface)(抽象类)的可变参数模板类templateclassFooImpl:publicFoo{}问题是我如何实现一个功能:Foo*getFoo(intarr[N]);或者更好:Foo*getFoo(int*pint,intsize);这将返回FooImpl模板参数对应我的数组?例如arr={4,2,6,1}我会得到FooImpl 最佳答案 我找到了问题的答案。诀窍在于使用结构可变参数模板而不是我
在我的项目冒险过程中,我意识到如果我想根据条件初始化参数,我不能利用新的c++11auto关键字的优势。基本上我有这样一个代码片段:autofoo=bar::getfoo();需要更改为:FOOfooif(cond){foo=bar::getfoo();}else{foo=baz::getotherfoo();}但是我需要用类型声明foo(因为编译器不知道我将使用相同的类型返回。我想知道在这种情况下是否有任何使用auto关键字的方法。我想出的另一个解决方案是使用?:具有这样代码的运算符:autofoo=cond?bar::getfoo():baz::getotherfoo();但是如果
我有一个JavaThread,它公开了其他线程想要访问的属性:classMyThreadextendsThread{privateFoofoo;...FoogetFoo(){returnfoo;}...publicvoidrun(){...foo=makeTheFoo();...}}问题是从运行到foo可用需要很短的时间。调用者可以在此之前调用getFoo()并获得一个null。我宁愿他们只是阻塞、等待,并在初始化发生后获取值。(foo之后永远不会改变。)准备就绪只需几毫秒,所以我对这种方法很满意。现在,我可以使用wait()和notifyAll()来实现这一点,而且我有95%的机会做