次のように、独自のクラス型 ( 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内のクラス外で宣言して初期化しようとしましたが、エラーが発生しました。
エラー: クラス 'SYT::SymbolsTable' で宣言された 'std::vector SYT::SymbolsTable::m_symbols(std::initializer_list)' メンバー関数がありません
ご覧のとおり、初期化する必要があるため、 this を使用しようとしていますがinitializer_list
、これが正しいかどうかはわかりません。
したがって、すべての前にベクトルを初期化する必要があることを知っています。
私の質問は:
- どこで初期化するか;
- 初期化する方法。