C++11 静态函数成员变量
c++11 static functional member variable
好吧,我被难住了。我一直在处理静态成员变量和函数时遇到一些困难,所以如果答案真的很明显,我深表歉意。不过,我无法弄清楚出了什么问题。
在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
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- C++预处理会生成变量成员、资源库和映射
- 局部堆栈变量成员的返回值优化
- Google Mock:在目标类的构造函数中实例化的模拟私有变量成员
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 如果派生类仅包含自动变量成员,是否有必要具有虚拟驱动器
- 线程安全性和静态变量/成员功能
- "static const char array"可以在 C 语言上包含变量成员吗
- 仅用于内部目的的类的所有变量/成员的技术术语是什么
- 如何强制转换变量成员以将其作为函数的引用参数传递
- 类中未声明变量成员函数
- 在 main 中初始化类的 "static const" 类型变量成员的更好方法
- c++模板类静态const变量成员作为映射键给出未定义引用
- 在类中初始化结构变量成员会导致分割错误
- 在c++中建模变量成员类型
- 模板私有静态变量成员的未定义符号
- 不能访问公共静态变量成员
- 常量变量成员在C++有什么用?
- g++ 4.8.2坚持简单变量成员是数组