错误:无效使用非静态数据成员';网络:NH';在c++;(也适用于NH和NI) 即使我使用值来初始化这3个变量而不使用方法插入值,但当我使用变量作为数组(W1,W2)> P >时,我仍然会出错。不确定你认为这段代码是如何工作的,底线是你不能声明C++中的非常量数组。尤其是未初始化的。在C++中,< P> >,不允许使用可变长度数组。code>W1和W2需要在编译时知道它的两个维度

错误:无效使用非静态数据成员';网络:NH';在c++;(也适用于NH和NI) 即使我使用值来初始化这3个变量而不使用方法插入值,但当我使用变量作为数组(W1,W2)> P >时,我仍然会出错。不确定你认为这段代码是如何工作的,底线是你不能声明C++中的非常量数组。尤其是未初始化的。在C++中,< P> >,不允许使用可变长度数组。code>W1和W2需要在编译时知道它的两个维度,c++,C++,使用 std::向量W1,W2 如果要在运行时初始化行和列 class NNetwork { private: int NI, NH, NO; double W1[NH][NI]; double W2[NO][NH]; public: // some method to insert values to NI,NH,NI } 那么 n网络W1; 网络W2; NNetwork类{private:int-NI,NH,NO;NI=2;NH=2;NO=1;double

使用

std::向量W1,W2

如果要在运行时初始化行和列

class NNetwork
{
private:

    int NI, NH, NO;

    double W1[NH][NI];
    double W2[NO][NH];

public:

// some method to insert values to NI,NH,NI

}
那么

n网络<1,2,3>W1;
网络<7,8,9>W2;

NNetwork类{private:int-NI,NH,NO;NI=2;NH=2;NO=1;double-W1[NH][NI];double-W2[NO][NH];}现在它说NI不命名类型,不能在函数之外编写任意代码。初始化代码通常放在构造函数中。
class NNetwork
{
    public:
    NNetwork(size_t ni, size_t nh, size_t no ): NI(ni),NH(nh),NO(no)
    {  }

    private: 
    const size_t NI, NH, NO; 

    vector<vector<double> > W1, W2;  
};
template<size_t NH, size_t NI, size_t NO>
class NNetwork
{
private:
    double W1[NH][NI]; // or std::array< std::array< double, NH>, NI > W1;
    double W2[NO][NH];
};
NNetwork< 1,2,3> W1 ;
NNetwork< 7,8,9> W2 ;