2012-02-03 2 views
1

Вот мой код:Как я могу решить C2059 ошибка: синтаксическая ошибка: «строка»»

class Foo 
{ 
    public: 
    Foo(const char*); 
}; 

class Bar 
{ 
    public: 
    Foo bu("adfds"); 
}; 

int main() 
{ 
    return 0; 
} 

Foo::Foo(const char* iLoc) 
{ } 

Когда я пытаюсь создать Foo класс в Bar классе, я получаю ошибку синтаксиса при попытке перейти к конструктору. Почему это так?

ответ

3

Я предпочитаю это ответ egrunin, как вы не должны отслеживать распределение памяти.

class Bar 
{ 

private: 

    Foo bu; 

public: 

    Bar() 
    : bu("adfds") 
    { 
    } 

}; 
2

вы не можете инициализировать bu в объявлении класса. это то, что вы хотите?

class Bar 
{ 
public: 
    Foo *bu; 

    Bar() { 
     bu = new Foo("adfds"); 
    } 
}; 

Редактировать

Как было отмечено в комментариях, вот способ сделать это без bu указатель:

class Bar : bu("adfds") 
{ 
public: 
    Foo bu; 
}; 
+2

Несомненно, 'Bar(): bu (" adfds ") {}' хватило бы? –

+0

Думаю, я понимаю .. поэтому мне нужно инициализировать bu в конструкторе класса Bar? – Jcrack

+0

Я так смущен. Поэтому я должен делать это в любое время, когда хочу использовать класс в другом классе? – Jcrack

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