2017-01-26 2 views
0

Точка инициализировать указатель на объект Mystic со значением «beep» любая идея?как я могу инициализировать объект

class Mystic { 
private: 
string label; 
Mystic(string & newlbl) { setLabel (newlbl)}; 
public: 
void setLabel(string newlbl){label = newlbl;} 
Mystic() : label(){}; 
}; 
int main(int argc, char *argv[]) 
{ 
... //i tried this 
     //string *p1 = new string("beep"); 
     //Mystic myst(p1); 
} 
+0

Поскольку этот вопрос о путаных указателях и ссылках и отображает некоторые анти-шаблоны, на него лучше всего ответить хорошая книга на C++. Возможно, вам стоит взглянуть на [рекомендуемый список книг на C++] (http://stackoverflow.com/questions/388242/). – jaggedSpire

ответ

1

Конструктор, который берет строку, не является общедоступным, поэтому вы не можете его использовать. Вместо этого используйте конструктор по умолчанию, а затем метод setLabel.

int main(int argc, char** argv) { 
    Mystic m; 
    m.setLabel("beep"); 
    Mystic* p = &m; 
} 
0

Конструктор вы пытаетесь использовать его собственный, и вы можете получить доступ только к общественному, так что вы должны сделать, что конструктор общественность, или если вы хотите использовать конструктор по умолчанию и инициализировать значение по умолчанию Mystic() : label("default"){}

Смежные вопросы