C++11 静态函数成员变量

c++11 static functional member variable

本文关键字:变量 成员 静态函数 C++11      更新时间:2023-10-16

好吧,我被难住了。我一直在处理静态成员变量和函数时遇到一些困难,所以如果答案真的很明显,我深表歉意。不过,我无法弄清楚出了什么问题。

在WSGrid.h中:

#include <functional>
class WSGrid
{
public:
    //constructors...
    static const std::function< char( void ) > _randomChar;
    //private data...
};

在WSGrid.cpp中:

#include <random>
std::default_random_engine generator;
std::uniform_int_distribution< char > distribution;
const WSGrid::_randomChar = std::bind( distribution, generator );

在我的主要.cpp:

#include "WSGrid.h"
#include <iostream>
int main( int argc, char* argv[] )
{
    std::cout << WSGrid::_randomChar() << std::endl;
    return 0;
}

当我尝试编译(g++ -std=c++11 -Wall -pedantic main.cpp)时,我得到"对WSGrid::_randomChar的未定义引用"。

所以......在我看来,我做的一切都是对的。我遵循此处的语法,至少据我所知。但显然有些不对劲。

您需要

正确定义_randomChar

更新:

const WSGrid::_randomChar = std::bind( distribution, generator );

自:

const std::function<char(void)> WSGrid::_randomChar = std::bind(distribution, generator);

您还需要链接WSGrid.cpp

g++ -std=c++11 -Wall -pedantic -c WSGrid.cpp -o WSGrid.o
g++ -std=c++11 -Wall -pedantic main.cpp WSGrid.o