C++-我可以创建另一个类的成员并在构造函数中使用它吗
C++ - can I create a member of another class and use it in a constructor?
所以我有两个类——一个用于特定玩家,一个用于团队玩家。
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()
时,您正在制作它的副本。这很可能是恰当的。但是,如果更适合的话,您可以选择使用移动语义。
相关文章:
- 通过构造函数创建的所有对象都具有相同的向量
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- std::map<int, A> 运算符 [] 需要使用空构造函数创建 A
- 稍后使用<Class>调用类构造函数创建 std::vector
- 通过类构造函数创建线程
- 尝试使用构造函数创建对象时出错
- 运算符 = 不匹配,构造函数创建一个指针
- C++ - 类构造函数创建对象,但构造的结果不同
- 我可以为带有参数的构造函数创建类工厂
- 我们可以说构造函数创建对象
- 如何使用在另一个类的构造函数中的堆栈上接受参数的构造函数创建对象
- 构造函数创建const对象
- 使用基构造函数创建派生对象
- 使用函数中的复制构造函数创建实例的副本,该函数获取作为基对象传递的实例
- 在从基类构造函数创建的单独线程中调用纯虚函数
- 递增由向 boost::p ython 公开的构造函数创建的对象的引用计数
- 通过使用不同的构造函数创建类的实例
- 通过使用不同的构造函数创建对象,并最终释放对象的内存
- 如何使用重载构造函数创建两个动态对象