【发布时间】:2013-02-16 01:52:38
【问题描述】:
我正在尝试声明我自己的类类型 (SY::Symbol) 的静态向量,如下所示:
SymbolsTable.h
namespace SYT
{
class SymbolsTable
{
public:
static std::vector<SY::Symbol> m_symbols;
void addToken(TK::Token);
};
}
我想在我的 SymbolsTable.cpp 文件的方法 addToken 中使用它。
SymbolsTable.cpp
#include "../../includes/px/SymbolsTable.h"
#include "../../includes/px/Token.h"
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator>
std::vector<SY::Symbol> SYT::SymbolsTable::m_symbols(std::initializer_list<SY::Symbol>);
SYT::SymbolsTable::SymbolsTable()
{
}
void SYT::SymbolsTable::addToken(TK::Token token)
{
int index = getSymbolIndex(token);
if(index == -1)
{
SY::Symbol symb(token, "");
SYT::SymbolsTable::m_symbols.push_back(symb);
token.setIndex(indexOf(m_symbols, symb));
}
else
{
token.setIndex(index);
}
}
我尝试在我的 SymbolsTable.cpp 中的类之外声明和初始化它,但我得到了错误。
错误:没有'std::vector SYT::SymbolsTable::m_symbols(std::initializer_list)' 在类 'SYT::SymbolsTable' 中声明的成员函数
如你所见,我必须初始化它,所以我尝试使用这个initializer_list,我不知道我这样做是否正确。
所以,我知道我必须在一切之前初始化向量。
我的问题是:
- 在哪里初始化它;
- 如何初始化它。
【问题讨论】: