这是这个问题的延续,一些不错的人已经帮助过我:Passing a string pointer to a struct in C++
我正试图通过string
将各种Struct
传递给pointer
的成员,但我做的事情从根本上是错误的。我认为它不需要被解除引用。以下流程适用于其他类型的数据,例如int
或char
。例如:
typedef struct Course{
string location;
string course;
string title;
string prof;
string focus;
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* or argument ‘2’ to ‘void c_Init
答案 0 :(得分:0)
更改
void c_Init(课程* d,字符串*位置,...){ c_SetLocation(d,& location); 。 。
}
到
void c_Init(课程* d,字符串位置,...){ c_SetLocation(d,location); 。 。
}
没有理由为位置传递指针。
答案 1 :(得分:0)
*location; //this is de-referencing
&location; //this is address of a variable (pointer to a variable)
因此,为了将字符串传递给c_SetLocation,您应该取消引用它:
void c_Init(Course *d, string *location, ... ){
c_SetLocation(d, *location);
. . .
}