C++ for循环c+中的变量范围+;奇怪的行为
我在for循环中声明了一个变量,在第二次迭代中,该变量在声明之前仍然存在。这是密码C++ for循环c+中的变量范围+;奇怪的行为,c++,copy-constructor,stdmap,C++,Copy Constructor,Stdmap,我在for循环中声明了一个变量,在第二次迭代中,该变量在声明之前仍然存在。这是密码 std::map<std::string,Schema> schemas; std::vector<std::string> schemaFolders = fileUtil.getSubFolders(BASE_FOLDER); for(int i = 0; i < schemaFolders.size(); i++){ std::string folde
std::map<std::string,Schema> schemas;
std::vector<std::string> schemaFolders = fileUtil.getSubFolders(BASE_FOLDER);
for(int i = 0; i < schemaFolders.size(); i++){
std::string folder(BASE_FOLDER);
folder += "/";
folder += schemaFolders[i];
Schema schema(folder);
schema->loadDatabases();
schemas[schemaFolders[i]] = schema;
std::cout<<std::endl<<schemas[schemaFolders[0]].getSchemaFolder()<<std::endl;
}
和Equals运算符
Schema & Schema::operator=(const Schema& other){
this->schemaFolder = other.schemaFolder;
this->databases = other.databases;
this->curDb = other.curDb;
return *this;
}
请注意,调试日志输出总是索引
0
,而不是i
代码>应该工作吗?请发布您的Schema&operator=(const Schema&)的实现代码>也是。在这里发布问题之前提取一个最小的示例。请参见,我添加了equals操作符。cout向我展示了与第一个schemaFolder对应的键一起存储的模式值在每次迭代中是如何变化的(这是我无法理解的)
Schema::Schema( const Schema& other ){
this->schemaFolder = other.schemaFolder;
this->databases = other.databases;
this->curDb = other.curDb;
}
Schema & Schema::operator=(const Schema& other){
this->schemaFolder = other.schemaFolder;
this->databases = other.databases;
this->curDb = other.curDb;
return *this;
}