我試圖在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