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

C++ - can I create a member of another class and use it in a constructor?

本文关键字:构造函数 创建 我可以 另一个 成员 C++-      更新时间:2023-10-16

所以我有两个类——一个用于特定玩家,一个用于团队玩家。

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类的构造函数,并在文件中指定一个玩家团队。这就是我所坚持的:

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

使用未声明的标识符"asdf"是我从中得到的全部。有人能给我指引正确的方法吗?

要回答您的问题,是的,可以在CTOR中创建一个对象并保留它。请注意,这样做是在分配内存,这可能会导致构造函数失败。此外,您正在将一个局部变量传递给"AddPlayer"方法,可能会出现问题,具体取决于实现方式。

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

编辑:回答实际问题;您可以在构造函数中创建另一个类的实例,然后随意使用它。附带说明一下,member通常指在类中声明的变量和函数。

线路:

Player asdf = (one);

可更改为:

Player asdf(one);

同样需要注意的是,当您将adsf传递给addPlayer()时,您正在制作它的副本。这很可能是恰当的。但是,如果更适合的话,您可以选择使用移动语义。