Переменная класса, которая является объектом этого класса - PullRequest
0 голосов
/ 24 октября 2010

Заголовок может сбивать с толку, но мне интересно, возможно ли создать такую ​​программу:

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");

компилятор:

ожидаемый идентификатор перед строковой константой

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

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

Ответы [ 2 ]

1 голос
/ 24 октября 2010
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 :: string.

0 голосов
/ 24 октября 2010

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

...