偷偷写代码
2021-09-06 17:51
采纳率: 100%
浏览 38

c++类的继承创建一个基类的数组

以下是我写的一段源码,主要问题是类strss中的动态创建与继承之间关系的问题,简单来说strs就是一个简单地字符串类,我想用strss继承strs,并动态的创建一个strs类的数组,整个代码的功能:输入整数,再输入相应个数个字符串,判断其是否符合,所有字符串判断完后一次性输出YES或者NO。
代码报错arr不存在。
另外可能有的小伙伴可能知道这个题,会说我题目没读对,我发现了,但是题的问题不难,主要是这个
另外
感谢各位的观看!
c++路上加油!


#include<iostream>
#include<string>
using namespace std;
class strs                     //字符串类 
{
    public:
        string str;            
        int np,nt;            //分别记录PAT的数量,正常来说,PT只含有一个且有序,A无限制  
        bool flag;
        
        strs()                //构造函数 
        {
            cin>>str;
            flag=true;
            np=0;
            nt=0;
            for(int i=0;i<str.size();i++)
            {
                if(str[i]=='P') np++;
                else if(str[i]=='T') nt++;
                else if(str[i]=='A') continue;
                else flag=false;
            }
            cout<<"strs构造函数"<<endl;
        } 
        
        void judgeit()               //判断函数 :判断strs对象的str字符串是否满足条件 
        {
            int nup=0,nut=0;
            if(np==1&&nt==1&&flag)   //P和T智能存在一个 ,flag为true时字符串不含有PAT以外的字符 
            {
                for(int i=0;i<str.size();i++)
                 {
                    if(str[i]=='P') nup=i;
                    else if(str[i]=='T') nut=i;
                     else continue;
                }
               if(nup+1<nut) cout<<"YES"<<endl;
               else cout<<"NO"<<endl;
            }
            else
            cout<<"NO"<<endl;
        }        
};


class strss :public strs      //目的:构建一个strs类的对象的数组,然后通过 创建strss类的对象完成所有创建 
{
    public:
        int nums;
        strss()
        {
            cin>>nums;
            strs *arr=new strs[nums];  
            cout<<"strss构造"<<endl;
        }
};



int main()
{
    strss a1;
    for(int j=0;j<a1.nums;j++)
    {
        a1.arr[j].judgeit();
    }
    return 0;
}
  • 收藏

1条回答 默认 最新

  • qfl_sdu 2021-09-06 17:58
    已采纳

    修改如下:

    class strss :public strs      //目的:构建一个strs类的对象的数组,然后通过 创建strss类的对象完成所有创建 
    {
    public:
        int nums;
        strs* arr;  //这里声明一下
        strss()
        {
            cin>>nums;
            arr=new strs[nums];  //这里去掉类型前缀
            cout<<"strss构造"<<endl;
        }
    };
    
    
    
    1 打赏 评论
    1人已打赏

相关推荐 更多相似问题