2014-02-11 4 views
0

Это продолжение этого вопроса, что некоторые хорошие люди уже помогли мне: Passing a string pointer to a struct in C++Передача указателя на строку на структуру в 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

Изменить

void c_Init (курс * d, строка * loc ation, ...) { c_SetLocation (d, & местоположение); . , ,

} 

к

недействительным c_Init (курс * d, строка место, ...) { c_SetLocation (d, место нахождения); . , ,

} 

Нет причин для передачи указателей на местоположение.

+0

я только сделал, что от отчаяния, когда ваше предложение (и то, как я думал, что правильный способ сделать он изначально) не работал. Я все равно получаю такую ​​же ошибку. –

+0

Поскольку вы не изменяете местоположение (я полагаю), установите параметр как строку const & location –

+0

Я изменяю его. Ну, есть дополнительная функция для этого. Но, несмотря на то, что ваш совет был на месте, спасибо. –

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); 
    . . . 
} 
Смежные вопросы