コードによくわからない問題があります。
«gcc バージョン 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)» を使用しています
編集:この行を使用してコンパイルします
g++ -g -std=c++0x -o "GeneticEngine.o" -c "GeneticEngine.cpp"
これが私が持っているエラーです:
GeneticEngine.tpl:16:5: erreur: parenthesized initializer in array new [-fpermissive]
そして、それは私の(最小化された)コードです:
GeneticEngine.hpp
#include "GeneticThread.hpp"
template <class T>
class GeneticEngine
{
public:
template <typename ... Args>
GeneticEngine(int nb_threads,float taux_mut,int tranche_mut,std::string filename,int pop_size,Args& ... args);
/* Other code */
private:
GeneticThread<T>* islands; /* Cause of error */
int size;
};
#include "GeneticEngine.tpl"
GeneticEngine.tpl
template <class T>
template <typename ... Args>
GeneticEngine<T>::GeneticEngine(int nb_threads,float taux_mut,int tranche_mut,std::string filename,int pop_size,Args& ... args) : size(nb_threads)
{
/*next line is 16 : Error */
islands = new GeneticThread<T>[size](taux_mut,tranche_mut,filename,pop_size/nb_threads,std::forward<Args>(args)...);
};
GeneticThread.hpp
template <class T>
class GeneticThread
{
public:
template <typename ... Args>
GeneticThread(float taux_mut,int tranche_mut,std::string filename,int pop_size,Args& ... args)
{ /* code ... */ };
/* Other code */
};
私はこれを読みました (テンプレートを使用する場合の配列の初期化 ) が、まったく同じではありません。
あなたが持っていなくてもそれを修正する考えがあるなら: [最後に私はこれを使用します:/]
GeneticThread<T>** islands;
islands = new GeneticThread<T>*[size];
for(int i=0;i<size;++i)
islands[i] = new GeneticThread<T>(taux_mut,tranche_mut,filename,pop_size/nb_threads,std::forward<Args>(args)...);
私がしたい:
GeneticThread<T>* islands;
それを行う方法はありますか?
私は試します:
islands = new (GeneticThread<T>[size](taux_mut,tranche_mut,filename,pop_size/nb_threads,std::forward<Args>(args)...));
と
islands = new GeneticThread<T>(taux_mut,tranche_mut,filename,pop_size/nb_threads,std::forward<Args>(args)...)[size];
しかし、うまくいきません。
ありがとう。