for循环中的构造函数

时间:2016-03-09 10:14:23

标签: c++ oop constructor

我刚开始使用面向对象,我对构造函数有疑问。这只会创建相同的对象" Team a"反复使用不同的参数i,正确吗?

for (int i = 1; i < n+1; i++) Team a (i); // construct teams

我如何创建不同的&#34;团队&#34;,即团队a,团队b ...团队h,如果我知道有多少团队?参数i可以同时作为属性和名称(第1组,第2组......)吗?

感谢先进的提示或帮助!

Pd:这是我使用的构造函数(如果您需要更多代码,请在评论中写下来):

public:
//constructors
Team(int n); // (this will set number to n and points, goals_scored, goals_lost to 0)

3 个答案:

答案 0 :(得分:3)

您可以使用std::vector

mongocxx::options::find opts;
opts.limit( 1 );
auto cursor = db["db-name"].find({ }, opts);

bsoncxx::document::view doc = *cursor.begin();  
std::cout << bsoncxx::to_json(doc) << std::endl;

注意: std::vector<Team> teams; for(int i = 0; i < n; ++i) teams.emplace_back(i + 1); // makes Team(i + 1) in vector 使用零基础索引,因此您的团队#1是索引0:

std::vector

答案 1 :(得分:1)

您想使用STL中的map

std::map <string, Team> Teams;
for (int i = 1; i < n+1; i++)
{
  std::string noStr = std::to_string(i);
  std::string teamName = "Team " + noStr; // "Team 1", "Team 2", ..., "Team N"
  Teams[teamName] = Team(i); // Store Team object in the map 
}

现在您可以使用其名称访问任何团队:

// For team 5 object
Teams["Team 5"]

答案 2 :(得分:0)

第一个问题:是的,它会产生n次a类型的变量Team。但是(!)它在每次迭代时都是for循环的局部。你以后不能再使用它们了。

第二个问题:纯数字不能是名字。 这不起作用:

int 1 = 1; // not(!) valid

您可以使用以下内容:

int a_1 = 1 ;
int a_2 = 2; 

但你不能通过变量产生这个:

for (int i = 1; i < n+1; i++){
    int a_i = 1; // defines a local variable "a_i" 
    int i = i ;// not valid i is already defined
}

您应该使用团队的容器(例如矢量)。