查看此处的其他答案以了解您实际询问编译器的内容。如果你想在你的类中创建一个常量 - 我在这里提供了一个解决方案。
在 C++ 中使用静态成员很有趣,但仅适用于 POD(plain-old-data)成员。对于更复杂的成员,事情变得丑陋。即使char*
这样也不会扩大规模。使用好的旧 C#define
有时是个好主意——即使在 C++ 中也是如此;
这样的事情将解决您的编译问题。玩#if 0
触发你的旧代码,并使用编译g++ -std=gnu++0x -c test1.cpp
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <regex>
using namespace std;
#if 0
// my fix
// in your H file
class Parser {
protected:
// regex: containers
static const regex rxProc;
};
// in your CPP file
const regex Parser::rxProc = regex("procedure\\s+([\\w]+)\\s*{");
#else
// your old code
class Parser {
protected:
// regex: containers
static const regex rxProc("procedure\\s+([\\w]+)\\s*{");
};
#endif
(甚至没有涉及使用正则表达式定义语法树的问题......或解析 Pascal 文件......这只是个坏主意,会破坏哦,所以,很多次......只是不要)