c++ - 使用堆上的成员初始化类内的类

标签 c++ class pointers dynamic-arrays

我需要一些指导。我正在尝试构建一个类 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 时的构造函数.

Demo.

关于c++ - 使用堆上的成员初始化类内的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973823/

相关文章:

python - 如何使一个函数可以被一个类使用但不能被它的python子类使用

java - 无法调用匿名类方法

pointers - 如何在 golang 中获取指向通过 interface{} 传递的结构的指针?

c++ - 如何在opencv中进行一对 multimap 像匹配?

C++:为什么 getline() 不打印输入字符串的最后一个字?

c++ - 在 C++ 中包含文件

c++ - 如何将数组指向嵌入式系统上的某个特定内存地址

c++ - 在 C++ 中将数组作为指针传递和分配的后果是什么?

c++ - 在 C++ 中设置较低层级私有(private)字段的最佳实践

C++ Qt5 Net-snmp LNK 错误