我正试图通过string
将各种Struct
传递给pointer
的成员,但我做的事情从根本上是错误的。我认为它不需要被解除引用。以下流程适用于其他类型的数据,例如int
或char
。例如:
typedef struct Course {
string location[15];
string course[20];
string title[40];
string prof[40];
string focus[10];
int credit;
int CRN;
int section;
} Course;
void c_SetLocation(Course *d, string location){
d->location = location;
. . .
}
当我尝试编译以下算法来初始化Course
:
void c_Init(Course *d, string &location, ... ){
c_SetLocation(d, location[]);
. . .
}
错误:
error: cannot convert ‘const char*’ to ‘std::string* {aka std::basic_string<char>*}’ for argument ‘2’ to ‘void c_Init(Course*, std::string*, ..
答案 0 :(得分:1)
例如,您实际上在location
字段中定义了一个包含15个字符串的数组。要么使用常规字符串;即G:
typedef struct Course {
string location;
string course;
string title;
string prof;
string focus;
int credit;
int CRN;
int section;
} Course;
或使用char数组:
typedef struct Course {
char location[15];
char course[20];
char title[40];
char prof[40];
char focus[10];
int credit;
int CRN;
int section;
} Course;
答案 1 :(得分:0)
当您声明char a[10]
时,您正在创建一个包含10个字符的数组。当您声明std::string
时,您正在创建一个可以增长到任意大小的字符串。当您声明std::string[15]
时,您将创建一个包含15个字符串的数组,这些字符串可以增长到任意大小。
这是你的结构应该是什么样子:
typedef struct Course {
std::string location;
std::string course;
std::string title;
std::string prof;
std::string focus;
int credit;
int CRN;
int section;
} Course;
答案 2 :(得分:0)
string location[15]
表示您要创建15个string
个实例,并且每个单个实例都可以包含任意长度的文本。
而不是d->location
,您需要指定其中一个字符串:d->location[0] = location
,d->location[1] = location
等。