template<long long X> class Bitset { public: std::vector<unsigned char> bit = std::vector<unsigned char> ((X+7)/8); public: /* constructors */ friend std::ostream &operator<< (std::ostream &output, const char x); }; std::ostream &operator<< (std::ostream &output, const char x) { output<<(short)(x); return output; }
Bitset a; /* code */ cout << a.bit[x]; cout << 'a';
不能重载运算符<<
,以便char
按您希望的方式运行。它不知道char
来自哪里,因此它不能根据源代码有不同的行为。
为了按照您所希望的方式工作,您必须使bitset
实现它自己的运算符[]
,该运算符返回代理对象,然后您可以为该代理重载运算符<<
,例如:
template<long long X>
class Bitset
{
private:
std::vector<unsigned char> bits = std::vector<unsigned char> ((X+7)/8);
public:
/* constructors */
class BitProxy
{
private:
unsigned char &bit;
public:
BitProxy(unsigned char &bit) : bit(bit) {}
BitProxy& operator=(unsigned char x) { bit = x; return *this; }
operator unsigned char() const { return bit; }
};
BitProxy operator[](size_t index) { return BitProxy(bits[index]); }
friend std::ostream& operator<< (std::ostream &output, const BitProxy &x)
{
output << static_cast<short>(static_cast<unsigned char>(x));
return output;
}
};
Bitset a;
// populate a as needed...
cout << a[x];
cout << 'a';
现场演示
问题内容: 我们有一个基于JBoss 7.1, JSF2 和Primefaces 3.3 的Web应用程序。 在我们的其中一个页面上,有10个项目可供显示;然后用户可以单击某种“显示更多”按钮,并且通过ajax显示更多的10个项目。用户可以单击“显示更多”按钮,直到没有其他项目可以显示为止。注意:这不是分页,每单击一次“显示更多”,显示的列表就会变长。 实际上,当用户单击按钮时,服务器将返回旧项目
我想使用cv::FileStorage类将我的MarkerRemote ance结构写入文件。 我试图超载 错误消息:
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: mysql中id(auto_increment列)的碎片 我的数据库中有此列。假设其名称为“ threadid”。它包含赋予每个线程以区别的唯一ID。 线程号9 8 7 6 5 4 3 2 1 假设我已删除ID为5和6的线程。 线程号9 8 7 4 3 2 1 但是,当删除后有一个提交时,给该线程的唯一ID是10。不是5。我认为
问题内容: 我对重用HttpUrlConnection(作为我正在开发的服务器和客户端之间的全状态协议的一部分)感兴趣。我知道持久性http有一个Connection = keep-alive标头。现在,我想知道如何重用这种构想。我写了这段代码: 现在如何将这个“ B”标头重新发送到服务器,我尝试重新连接等,但是没有任何效果。 服务器也执行 我看过很多论坛,但是没有人写过。也许不处理这个? 问题答
问题内容: 我创建了一个自定义样式表,该样式表将覆盖Wordpress模板的原始CSS。但是,在我的日历页面上,原始CSS具有声明的每个表格单元格的高度: 有什么办法可以覆盖这个吗? 问题答案: 覆盖!important修饰符 只需使用添加另一个CSS规则,并赋予选择器更高的特异性(向选择器添加其他标签,id或类) 在比现有选择器晚的位置添加具有相同选择器的CSS规则(平局中,最后一个定义的获胜者
问题内容: 我的插入符号有问题,没有获得focusGained(请参见Swing Action中的代码)到第二,插入符号就不会闪烁。JTextField并回到1st。JTextField 如何正确覆盖DefaultCaret#setBlinkRate() (不覆盖插入符号)默认情况下是文档末尾的插入符号,并在1日闪烁。获得 在win7_32b,Java7.011 / 025 / Java6上测试