【发布时间】:2016-05-24 07:48:07
【问题描述】:
我正在使用 C++14 并尝试为每个循环创建一个打印出数组的每个字符串的循环。我得到错误:
user.cpp:12:34:错误:从“char”类型的表达式中对“std::string& {aka std::basic_string&}”类型的引用进行无效初始化
for(std::string &str : *(u->favs)){
当我在 foreach 循环中将 std::string 更改为 auto 时,它可以工作,但 str 成为 favs 数组中第一个字符串的单个字符。 我的代码如下:
用户.h
class User{
private:
public:
User(){
favs = new std::string[5]{std::string("Hello"), std::string("how"), std::string("are"), std::string("you"), std::string("?")};
}
~User(){
delete[] favs;
}
std::string lName;
std::string fName;
int age;
std::string *favs;
};
用户.cpp
#include <iostream>
#include "user.h"
void create(User *u){
std::cout << "Please enter first name: ";
std::cin >> u->fName;
std::cout << "Please enter last name: ";
std::cin >> u->lName;
std::cout << "Please enter age: ";
std::cin >> u->age;
for(std::string &str : *(u->favs)){
std::cout << str << std::endl;
}
std::cout << "\n";
}
main.cpp
#include <iostream>
#include <string>
#include "user.h"
int main(){
std::string command;
User user;
std::cout << "bp1: " << user.favs->size() << std::endl;
while(true){
std::cout << "Please enter a command (Create, Update, View, Favorites, or Quit): ";
std::cin >> command;
if(command == "Create"){
create(&user);
} else if(command == "Update"){
update(&user);
} else if(command == "View"){
view(&user);
} else if(command == "Favorites"){
//favorites(&user);
} else if(command == "Quit"){
break;
} else std::cout << "Please input a valid command.\n";
}
}
【问题讨论】:
-
另外,user.favs的大小是数组第一个字符串的大小,而不是数组的元素个数