Я весь день застрял в этой проблеме, и, может быть, кто-нибудь может объяснить это мне? Я не предоставляю свой точный код, но похожую ситуацию на то, что я пытаюсь сопровождать (и сокращенную версию). Это симулятор ресторана.Назначение ссылки на строку указателю
int main() {
Restaurant i;
string tableID;
cin >> tableID;
i.append(new Table(tableID));//this appends a new table to the linked list
}
//.h file we're not allowed to modify
class Table
{
public:
Table(const string& tableID);//constructor
private:
string* tableID;
}
// .cpp file I'm writing
Table::Table(const string& tableID){
this->tableID = tableID;
}
Я получаю сообщение об ошибке:
table.cc:9:18: error: cannot convert ‘const string {aka const std::__cxx11::basic_string}’ to ‘std::__cxx11::string* {aka std::__cxx11::basic_string*}’ in assignment this->tableID = tableID;
Может кто-нибудь сказать мне, что происходит? Мне кажется, что он передает адрес tableID
в main()
и присваивает его указателю в конструкторе, который, как я думал, был законным, но, возможно, это const
отбрасывает меня.
Ну, сообщение об ошибке кажется довольно четким. Вы пытаетесь присвоить выражение типа «string» переменной типа «указатель на строку». Это не работает по той же причине, что и 'int * p = 42;' не будет работать - не имеет смысла. –
Да, я понял, что это так, но я не мог понять, как я собираюсь преобразовать эту строку в указатель. – Mike1982