C ++-我可以创建另一个类的成员并在构造函数中使用它吗?

时间:2018-10-31 00:04:00

标签: c++ oop

所以我有两个班级-一个是针对特定玩家的,另一个是针对团队的玩家的。

Player(string line){
    string write;
    stringstream line1(line);
    int i = 0;
    while (getline(line1, write, ';')){
        switch (i) {
            case 0:
                name = write;
                i++;
                break;
            case 1:
                surname = write;
                i++;
                break;
            case 2:
                skills[0] = write;
                i++;
                break;
            case 3:
                skills[1] = write;
                i++;
                break;
            case 4:
                skills[2] = write;
                i++;
                break;
            case 5:
                skills[3] = write;
                i++;
                break;
            case 6:
                skills[4] = write;
                i++;
                break;
            case 7:
                age = stoi(write);
                i++;
                break;
            case 8:
                height = stoi(write);
                break;

            default:
                break;
        }
    }
}

Player类具有一个构造函数,该构造函数接受带有所有参数的字符串并将其全部设置。有效。
我想要完成的是能够将包含某些行(fstream类型)的文件传递给Team类的构造函数,并在文件中指定一组Players。这就是我要强调的:

Team(fstream file){
    string one;
    while (getline(file, one))
        Player asdf = (one);
        addPlayer(asdf);
}

使用未声明的标识符'asdf'就是我从中得到的全部。有人可以指导我采取正确的方法吗?

2 个答案:

答案 0 :(得分:0)

要回答您的问题,是的,可以在CTOR中创建一个对象并将其保留。请注意,这样做会分配内存,这可能会导致构造函数失败。另外,您正在将局部变量传递给“ AddPlayer”方法,根据实现的方式,可能可能会成为问题。

没有看到更多代码,您发布的内容似乎有效。 这两段代码是否在同一个源文件中?也许您需要在文件顶部声明“ #include Player.h”来声明团队。

答案 1 :(得分:0)

编辑:回答实际问题;您可以在构造函数中创建另一个类的实例,然后根据需要使用它。附带说明,$fl = File-name to send to target Server $usrn = User-name $pswd = Password $trgtsvr = Target-server Name/IP $trgtdir = Target-folder path for Target-server Name/IP $sntdir = 'Sent' folder on Source Server $lgfl = Logfile name for std output & error to be dumped into curl --cacert --ftp-ssl -k -T $fl -u $usrn:$pswd ftp://$trgtsvr:2121$trgtdir &>> $sntdir/$lgfl 通常是指在类中声明的变量和函数。

该行:

curl --tlsv1 -T $fl -u $usrn:$pswd ftp://$trgtsvr:2121$trgtdir &>> $sntdir/$lgfl

可以更改为:

member

另外请注意,将Player asdf = (one); 传递给Player asdf(one); 时,您正在复制它。那可能很合适。但是,如果更合适,您可以选择采用移动语义。