zoukankan      html  css  js  c++  java
  • C++初始化列表问题

    C++初始化列表问题,类中有一个对象类型的数组成员变量,在初始化列表中初始化时报错“[]”操作符语法错误

    class ClassA{
    private ClassB arrayOfObjectClassB[2];
    public ClassA(int i):arrayObjectOfClassB[0](i),arrayObjectOfClassB[1](i)
    }
    arrayObjectOfClassB[0](i)这儿有问题
     
    初始化列表中,只能初始化 单个变量 或 类的对象,不能初始化数组
    数组作为成员变量时只有默认初始化,也就是无法传递参数。有两种变通方案:你可以把对象数组改成指针数组,或者把ClassB类的构造和初始化分开。
    方案一:
    class ClassA{
    private:
    ClassB* arrayOfObjectClassB[2];
    public:
    ClassA(int i){
    arrayObjectOfClassB[0]=new ClassB(i);
    arrayObjectOfClassB[1]=new ClassB(i);
    }
    };
    方案二:
    class ClassB{
    private:
    int data;
    public:
    ClassB(int d):data(d){ }
    ClassB(){ }
    void Init(int d){data=d;}
    };
    class ClassA{
    private:
    ClassB arrayOfObjectClassB[2];
    public:
    ClassA(int i){
    arrayObjectOfClassB[0].Init(i);
    arrayObjectOfClassB[1].Init(i);
    }
    };
  • 相关阅读:
    leetcode----------Pascal's Triangle II
    leetcode----------Pascal's Triangle
    leetcode----------Climbing Stairs
    leetcode----------Balanced Binary Tree
    HTML的DOM树结构
    记一记流水账
    多校训练4——Hehe
    深啾啾~亚马逊与天猫大比拼
    Photo4
    第一次用FontLad~
  • 原文地址:https://www.cnblogs.com/lidabo/p/3140983.html
Copyright © 2011-2022 走看看