【问题标题】:c++ global class constructor in lib filelib文件中的c ++全局类构造函数
【发布时间】:2012-01-26 17:39:35
【问题描述】:

我有以下项目生成 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;
}

我有另一个项目生成一个与 foo.lib 链接的 exe 文件。似乎没有调用构造函数 A::A() 。我怎样才能使这项工作,我是否缺少一些编译器选项?

PS:我使用的是 Visual Studio 编译器 2008

谢谢, 拉克斯万。

【问题讨论】:

  • 你的意思是它没有被调用?你有错误吗?你在 exe 中有什么代码来实例化它?
  • 我有一个断点,构造函数中有一个 printf,但它们都没有工作。另外,当代码运行时,静态变量 i 一直为 NULL

标签: c++ class constructor


【解决方案1】:

如果我改变了

A* i = 0;

A* A::i = 0;

所以它会链接,在 VS2005 中为我正确调用了构造函数,默认选项。这个确切的示例是否在您的编译器上重现了该问题?

【讨论】:

  • 我发现了问题,因为主项目中没有使用A,编译器“删除”任何A相关数据,如果我使用A(即使是简单的指针),那么一切正常。
猜你喜欢
  • 2011-09-05
  • 2010-12-28
  • 1970-01-01
  • 2018-08-28
  • 2020-09-21
  • 2013-11-02
  • 2017-05-18
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多