我需要一些指导。我正在尝试构建一个类 B2
,其成员中有一个来自类 A2
的对象。另一方面,A2 类通过成员指针“*y”以动态方式分配一些内存。这是我现在无法编译的代码。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
class A2{
int N;
public:
double *y;
A2(int N_);
~A2(){free(y);};
};
A2::A2(int N_){
N = N_;
y = (double*)calloc(N,sizeof(double));
}
class B2{
int N;
public:
A2 obj(N);
B2(int N_) : N(N_) {};
~B2(){};
};
int main(){
int N = 10;
B2 model(N);
for(int i=0;i<N;i++) model.obj.y[i] = i;
for(i=0;i<N;i++) printf("\ny[%d]=%d",i,model.obj.y[i]);
return 1;
}
当我尝试初始化模型
时,我在A2 obj(N)
的初始化中收到错误:'N'不是类型
> 这就是为什么我想使用此建议的成员初始值设定项列表 post .
最佳答案
您不能使用N
在成员(member)声明中;使用初始化列表来代替。
以下是如何修复您的 B2
定义:
class B2{
int N;
public:
A2 obj;
B2(int N_) : N(N_), obj(N_) {};
~B2(){};
};
以上,obj(N_)
耗材N_
至obj
构造 B2
时的构造函数.
关于c++ - 使用堆上的成员初始化类内的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973823/