C ++ конструктор глобального класса в файле lib - PullRequest
0 голосов
/ 26 января 2012

У меня есть следующий проект, генерирующий foo.lib.

//foo.h:
class A
{
public:
    A();
    static A* i;
};

//foo.cpp:
A* i = 0;
A g_A_instance; 
A::A()
{
    //this constructor is not called :(
    i = this;
}

У меня есть другой проект, генерирующий exe-файл, который связывается с foo.lib.Кажется, конструктор A :: A () не вызывается.Как я могу сделать эту работу, есть ли какие-то опции компилятора, которые мне не хватает?

PS: я использовал компилятор visual studio 2008

Спасибо, Raxvan.

1 Ответ

0 голосов
/ 26 января 2012

Если я изменю

A* i = 0;

до

A* A::i = 0;

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

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