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);
    }
    };
  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/lidabo/p/3140983.html
Copyright © 2011-2022 走看看