C++ 错误#1006值不是C+中的函数+;由炼金术编译的代码

C++ 错误#1006值不是C+中的函数+;由炼金术编译的代码,c++,apache-flex,flash,actionscript-3,alchemy,C++,Apache Flex,Flash,Actionscript 3,Alchemy,我想把一个大图书馆移植到炼金术。我碰到了一个看起来像炼金术虫的东西。我有一个静态成员的类。有一个静态函数使用它。大概是这样的: 在foo.h中: class Foo { static Bar m_pBar; static void doSomething (int a); } 在foo.cpp中: Bar Foo::m_pBar; void Foo::doSomething (int a) { m_pBar.doSomething(a); } 当我执行Foo::do

我想把一个大图书馆移植到炼金术。我碰到了一个看起来像炼金术虫的东西。我有一个静态成员的类。有一个静态函数使用它。大概是这样的:

在foo.h中:

class Foo
{
    static Bar m_pBar;
    static void doSomething (int a);
}
在foo.cpp中:

Bar Foo::m_pBar;

void Foo::doSomething (int a)
{
    m_pBar.doSomething(a);
}
当我执行Foo::doSomething(a)时,我得到TypeError:Error#1006:value不是函数

另一方面,如果我在静态函数中使用同一类型的局部变量(只是为了测试),它可以工作:

void Foo::doSomething (int a)
{
    // Test
    Bar pBarTest;
    pBarTest.doSomething(a);
}
所以我猜静态变量没有被初始化。在Linux和MAC中用G+编译,在Windows中用Visual C++ 2008编写,这样看起来很好,看起来像炼金术在做错。
有人遇到过同样的问题吗?

我无法重现您的问题——您提供的示例代码是否确实产生了问题(或者只是一个示例)?@ggambett您可以为Bar添加源代码吗?