Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:另一个类中的类的实例_C++_Class_Oop_Pointers_Visual C++ - Fatal编程技术网

C++ C++;:另一个类中的类的实例

C++ C++;:另一个类中的类的实例,c++,class,oop,pointers,visual-c++,C++,Class,Oop,Pointers,Visual C++,我有一个名为Matrix的类和一个名为NeuralNet的类。 它们看起来像这样: 矩阵.h: class Matrix { public: double * matrix = nullptr; Matrix(int,int); }; #include "Matrix.h" Matrix::Matrix(int h,int w) { matrix = new double[h*w]; }; class NeuralNet { public: Matrix * ptr

我有一个名为
Matrix
的类和一个名为
NeuralNet
的类。 它们看起来像这样:

矩阵.h

class Matrix
{
  public:
  double * matrix = nullptr;
  Matrix(int,int);
};
#include "Matrix.h"
Matrix::Matrix(int h,int w)
{
  matrix = new double[h*w];
};
class NeuralNet
{
  public:
  Matrix * ptr = nullptr;
  NeuralNet(int,int);
}
#include "Matrix.h"
#include "NeuralNet.h"
NeuralNet::NeuralNet(int h,int w)
{
  ptr = new Matrix(h,w);
}
矩阵.cpp

class Matrix
{
  public:
  double * matrix = nullptr;
  Matrix(int,int);
};
#include "Matrix.h"
Matrix::Matrix(int h,int w)
{
  matrix = new double[h*w];
};
class NeuralNet
{
  public:
  Matrix * ptr = nullptr;
  NeuralNet(int,int);
}
#include "Matrix.h"
#include "NeuralNet.h"
NeuralNet::NeuralNet(int h,int w)
{
  ptr = new Matrix(h,w);
}
我的问题是:“如何在类
NeuralNet
中使用该类的实例?” 我试过:

NeuralNet.h

class Matrix
{
  public:
  double * matrix = nullptr;
  Matrix(int,int);
};
#include "Matrix.h"
Matrix::Matrix(int h,int w)
{
  matrix = new double[h*w];
};
class NeuralNet
{
  public:
  Matrix * ptr = nullptr;
  NeuralNet(int,int);
}
#include "Matrix.h"
#include "NeuralNet.h"
NeuralNet::NeuralNet(int h,int w)
{
  ptr = new Matrix(h,w);
}
NeuralNet.cpp

class Matrix
{
  public:
  double * matrix = nullptr;
  Matrix(int,int);
};
#include "Matrix.h"
Matrix::Matrix(int h,int w)
{
  matrix = new double[h*w];
};
class NeuralNet
{
  public:
  Matrix * ptr = nullptr;
  NeuralNet(int,int);
}
#include "Matrix.h"
#include "NeuralNet.h"
NeuralNet::NeuralNet(int h,int w)
{
  ptr = new Matrix(h,w);
}
这不起作用,我得到一个错误:

任何形式的帮助都将不胜感激!
感谢您在NeuralNet.h中预先声明矩阵:

class Matrix;
或包括:

#include "Matrix.h"
另外,在Matrix.cpp中

Matrix::Matrix(int h,int w)
{
   Matrix = new double[h*w];
}
应该是

Matrix::Matrix(int h,int w) :
   matrix( new double[h*w] )
{
}

如果添加一个
类NeuralNet
}
之后,
矩阵
应该是
矩阵
刚才添加的分号完全没有任何作用,只是一个打字错误。为什么矩阵应该是矩阵?@AlessandroLegnani,因为C++区分大小写。