Неразрешенный внешний символ "public: class Foo __thiscall Bar :: bu (char const *)" - PullRequest
0 голосов
/ 03 февраля 2012

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

class Foo
{
public:
    // The custom constructor I want to use.
    Foo(const char*);
};

class Bar
{
public:
    Bar();
    //The instance of Foo I want to use being declared.
    Foo bu(const char*);
};

int main(int argc, char* args[])
{
    return 0;
}

Bar::Bar()
{
    //Trying to call Foo bu's constructor.
    bu("dasf");
}

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

1 Ответ

0 голосов
/ 03 февраля 2012

Это, вероятно, то, что вы хотите:

class Foo
{
public:
    // The custom constructor I want to use.
    Foo(const char*);
};

class Bar
{
public:
    Bar();
   //The instance of Foo I want to use being declared.
   Foo bu; // Member of type Foo
};

int main(int argc, char* args[])
{
    return 0;
}

Bar::Bar() : bu("dasf") // Create instance of type Foo
{
}

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

Что касается этого объявления: Foo bu(const char*); Это объявление функции-члена с именем bu, которая принимает const char* и возвращает Foo. Неразрешенная ошибка символа заключается в том, что вы никогда не определяли функцию bu, но вам нужен экземпляр Foo, а не функция.

Другой метод после просмотра комментариев:

class Foo
{
public:
    // The custom constructor I want to use.
    Foo(const char*);
};

class Bar
{
public:
    Bar();
    ~Bar() { delete bu;} // Delete bu
   //The instance of Foo I want to use being declared.
   Foo *bu; // Member of type Foo
};

int main(int argc, char* args[])
{
    return 0;
}

Bar::Bar() : bu(new Foo("dasf")) // Create instance of type Foo
{
}

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

А также есть много других проблем с вашим кодом, возможно, было бы неплохо получить книгу на C ++, например C ++ Primer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...