c++ - 访问嵌套模板结构的重载运算符上的封闭模板类数据成员
问题描述
这可能更多的是设计问题而不是技术问题。
但无论如何,我怎样才能访问JolloManager
它的嵌套结构中的数据成员实例?(访问deck
?)
#include <array>
#include <iostream>
#include <numeric> //std::iota
#include <sstream>
template<std::size_t N>
class JolloManager
{
private:
template<int ID, int c> struct PlayerCards
{
int id {ID};
int cards[c] {0};
friend std::istream& operator >> (std::istream& is, PlayerCards& p) {
for(auto& i : p.cards) {
is >> i;
deck[i-1] = p.id; //error: invalid use of non-static data member 'JolloManager<N>::deck'
}
return is;
}
};
private:
enum PlayerId { princeID = 100, princessID = 101 };
PlayerCards<princeID, 2> prince;
PlayerCards<princessID, 3> princess;
std::array<int, N> deck;
public:
JolloManager<N>() {
std::iota(deck.begin(), deck.end(), 1);
};
public:
bool Read();
int FinalCard();
};
template<std::size_t N>
bool JolloManager<N>::Read()
{
static std::string line;
std::getline(std::cin, line);
std::istringstream issline(line);
issline >> prince;
issline >> princess;
if(prince.cards[0] == 0) {
return false;
}
return true;
}
int main()
{
JolloManager<52> JManager;
JManager.Read();
return 0;
}
解决方案
推荐阅读
- javascript - 循环遍历对象时出错
- date - power bi 检查日期是否为过去 12 个月
- hibernate - Crieria.Root 类无法获取作为复合键属性的本地属性
- firebase - 当文档在设备外更新时,Firestore 的离线持久性如何表现?
- javascript - 制表符 - 标题排序
- oracle - 运行程序时,用户必须能够在两个参数中的一个参数中输入值,前提是两者不能保持空白
- keras - Keras 中超过 1700 个类别的多标签分类
- c++ - 未初始化的警告需要 -O2
- php - SQL 计数返回 0
- tfs - 如何在 TFS 上的另一个集合上发布我的项目的第二个版本?