に私はオブジェクトと2Dベクトルを持ってどのように今2Dベクトルへの割当対象事業者のための一致なし=
std::vector<std::vector<perceptron>> p;
私はこの
PrintRectangle::PrintRectangle(QWidget *parent) : QWidget(parent),
p(5, std::vector<perceptron>(5))
{
tech = new teacher(clicked);
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
p[i][j] = new perceptron();
p[i][j].randweight();
}
}
double learnConst = 0.1;
//tech->learnPerceptrons(p);
}
のようなオブジェクトperceptron
を割り当てたいしかし、私はエラーを取得します
E:\Sieci Neuronowe\Perceptron\printrectangle.cpp:16: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<perceptron> >::value_type {aka perceptron}' and 'perceptron*')
p[i][j] = new perceptron();
^
どうすれば修復できますか?
EDIT:
私はこのコードが正常に動作しますC#では
Perceptron[] p;
p = new Perceptron[10];
for (int i = 0; i < 10;i++)
{
p[i] = new Perceptron();
p[i].randweight();
}
だったのC#のコードをモデルにしました。 コンパイラエラーが正しいですので、それは、C++
回答ありがとうございました。質問があります。更新された質問を見ることができますか? – lukassz
@Lukassz - C++とC#の間でより近似したコードを望むなら、 'perceptron'オブジェクトへの(スマートな)ポインタのベクトルを格納する必要があります。 C#はこれを内部的に行い、C++のポインター構文を使用する必要はありません。私は答えを例で更新しました。 –
@lukassz C++!= C#。アイデアのフレームワーク/ソースとしてC#を使用しますが、どのようにメモリを管理するのかを複製しようとはしません。C#は無限のメモリシミュレータ、ガベージコレクタをベースにしていますが、C++はメモリとリソースの厳格で個人的な制御に基づいています。カールのアドバイスを受けて、オプション1に行く。必要なときにのみ動的に割り当てます。 – user4581301