相关疑难解决方法(0)

"静态"在C中意味着什么?

static在C代码中看到了不同地方使用的单词; 这就像C#中的静态函数/类(其中实现是跨对象共享的)?

c syntax static

1062
推荐指数
15
解决办法
86万
查看次数

static char关键字在函数数组参数中的用途如"char s [static 10]"?

在浏览一些源代码时,我遇到了这样的函数:

void someFunction(char someArray[static 100])
{
    // do something cool here
}
Run Code Online (Sandbox Code Playgroud)

通过一些实验,似乎其他限定符也可能出现在那里:

void someFunction(char someArray[const])
{
    // do something cool here
}
Run Code Online (Sandbox Code Playgroud)

似乎只有[ ]在将数组声明为函数的参数时才允许使用限定符.这些怎么办?为什么功能参数不同?

c arrays parameters static

131
推荐指数
1
解决办法
2万
查看次数

如何与多个翻译单元共享一个静态变量?

我想使数组静态,并希望在其他翻译单元中引用它.然后我将其定义为static int array[100] = {...},并在其他翻译单元中声明为extern int array[].但编译器告诉我静态和外部的存储类相互冲突,我怎么能通过它仍然达到我的目标?

c c++

1
推荐指数
1
解决办法
1688
查看次数

如何从主应用程序获取GetInstance的引用?

我正在遵循这个单例模式,为什么错误LNK2001:在这种情况下未解析的外部符号?我的问题看起来很相似,但我的问题不在于静态实例的定义.我的问题是从另一个类解析静态GetInstance()定义.

我的错误似乎不同,或以前的答案是不充分的.我已经尝试过这样的建议,"你需要在课堂外定义s_instance"这对我来说是没有意义的cpp noob.我在标题中声明静态,并在cpp中定义它们的实现.

我也不需要关于单例的线程安全的讲座,处理程序绑定使用信号2 ...

State.h

class State
{   
public: 
    State(void);
    ~State(void);

    static State* instance; 
    static State* GetInstance(); 
... 

};
Run Code Online (Sandbox Code Playgroud)

State.cpp

State::AppState mCurrentState;
boost::signals2::signal<void ()> mSignal;


State* instance = NULL;
State* GetInstance()
{
    if( instance == NULL)
    {
        instance = new State();
        return instance;
    }
    else
    {
        return instance;
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些都很好.然后当我尝试访问这样的单例时 State *state = State::GetInstance();,我得到"未解析的外部符号"错误.

错误LNK2019:未解析的外部符号"public:static class State*__cdecl State :: GetInstance(void)"(?GetInstance @State @@ SAPAV1 @ XZ)在函数"public:virtual void __thiscall MesherApp :: setup(void)"中引用(?设置@ MesherApp …

c++ singleton static compilation

1
推荐指数
1
解决办法
302
查看次数

标签 统计

c ×3

static ×3

c++ ×2

arrays ×1

compilation ×1

parameters ×1

singleton ×1

syntax ×1