Я пытаюсь определить в card.h
некоторые векторы моделирования карточной игры. Я отделяю ряды карты в векторы number_ranks
и non_number_ranks
, и хочу, чтобы объявить const vector<Rank> ranks
, которая объединяет оба упомянутых выше векторы:Почему компилятор думает, что я не назвал тип векторного var?
// "card.h" file contents (top level).
#include <vector>
using namespace std;
enum class Rank {one = 1, two, three, four, five, six, seven, eight,
nine, ten, jack, queen, king, ace};
const vector<Rank> number_ranks {
Rank::one, Rank::two, Rank::three, Rank::four, Rank::five,
Rank::six, Rank::seven, Rank::eight, Rank::nine, Rank::ten};
const vector<Rank> non_number_ranks {
Rank::jack, Rank::queen, Rank::king, Rank::ace};
vector<Rank> _tmp (number_ranks);
// ERROR ON THE LINE BELOW.
_tmp.insert(_tmp.end(), non_number_ranks.begin(), non_number_ranks.end());
const vector<Rank> ranks (_tmp);
Однако я получаю эту ошибку компилятора на комментировал линии:
card.h|16|error: ‘_tmp’ does not name a type
Однако я четко определить тип _tmp
на линии непосредственно перед ошибочной линии:
vector<Rank> _tmp (number_ranks);
Почему компилятор думает, что я не назвал этот тип?
Вы не можете вызывать методы из верхнего уровня. Выражения не допускаются на верхнем уровне (* namespace-scope *), только декларации. –
Я предполагаю, что этот код не находится внутри какой-либо функции, его глобальный, поэтому компилятор не понимает, что ему нужно вызвать функцию. –
Обратите внимание, что вы должны [избегать использования подчеркивания под идентификаторами] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier). – user694733