Как я могу решить ошибку C2059: синтаксическая ошибка: «строка» - PullRequest
1 голос
/ 03 февраля 2012

Вот мой код:

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

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

int main()
{
    return 0;
}

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

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

Ответы [ 2 ]

3 голосов
/ 04 февраля 2012

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

class Bar
{

private:

    Foo bu;

public:

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

};
2 голосов
/ 03 февраля 2012

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

class Bar
{
public:
    Foo *bu;

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

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

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

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