2010-10-24 3 views
0

Название может быть запутанным, но мне интересно, можно ли создать программу, как это:класса переменной является объектом которым этого класса

class family_tree 
{ 
private: 
    string name, surname; 
    family_tree father(); //fragile point! 

public: 
    family_tree(); 
    family_tree(string n, string sur"); 
    void print(); 
}; 

Какой стандарт говорит о такой декларации? Какие хорошие привычки программирования говорят об этом? Это опасно?

Более того, я не могу использовать второй конструктор:

family_tree father("A","B"); 

составитель:

ожидается идентификатор до того строковой константы

ожидается '' или '...' перед строкой постоянный

Я буду благодарен за любую помощь

ответ

1
class family_tree 
{ 
private: 
    string name, surname; 
    family_tree father(); //fragile point! 

public: 
    family_tree(); 
    family_tree(string n, string sur); // note that I removed a " here. 
    void print(); 
}; 

Совершенно верно. Ваша хрупкая точка вообще не является хрупкой - у вас есть функция, которая возвращает family_tree, и не имеет значения, что она вызвана для объекта family_tree. Независимо от того, предоставляет ли вам язык для неявного использования строкового литерала const char * для строки std ::, я не могу вспомнить.

0

upss..youre the right DeadMG Я только что объявил функцию. Кто-то перед вами (он удалил сообщение?) Написал, что я могу объявить указатель на объект family_tree * father; Я думаю, что это лучшее решение для моей проблемы

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