如何访问传入模板参数的私有成员数据
How to Access Private Member Data of a Passed in Template Parameter
正在添加一个类似于set的自定义比较器函数,但它是作为模板参数传入的。为了测试这是否有效,我有一个构造函数,它使用这个模板形参对象作为实参,并将相同类型的私有成员设置为传入的实参。如何访问将作为模板参数传入的类中声明的私有成员?
下面是必要的代码: template <typename T,class Comparator = std::less<T>> class square_list
private: Comparator m_cmp; // The private object within my container class
square_list(Comparator const& cmp) : m_cmp(cmp) { if (m_cmp.mode == 1) data_.sort(); } \ The private member data I'm trying to access (.mode)
作为模板参数传入的类(它在单元测试文件中):
template <class T>
class RuntimeCmp
{
public:
enum cmp_mode { normal, reverse };
private:
cmp_mode mode;
public:
RuntimeCmp( cmp_mode m = normal ) : mode(m) { }
bool operator()(T const& t1, T const& t2) const { return mode == normal ? t1 < t2 : t2 < t1; }
bool operator==( RuntimeCmp const& rc ) { return mode == rc.mode; }
};
和一个例子,我的容器是如何被构造与模板参数传入:
BOOST_AUTO_TEST_CASE( ut_ctor_compare_passed ) {
RuntimeCmp<double> rc(RuntimeCmp<double>::reverse);
square_list<double,RuntimeCmp<double>> s(rc);
vector<double> data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (auto x : data)
s.insert(x);
BOOST_CHECK( std::equal( s.begin(), s.end(), data.rbegin() ) );
}
我想把它变成一个朋友课或类似的东西?谢谢你的建议!
看这个链接:https://github.com/altamic/privablic
相关文章:
- 可变参数模板与使用元组在参数中添加不同的数据对
- 带参数的数据结构的全局声明
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如果参数与数据成员的参数同名,该怎么办?
- 指向(数据)成员的指针作为非类型模板参数,例如具有自动存储持续时间/无链接
- 自动模板参数、数据成员和恒常性
- 如何使用宏根据参数定义不同的数据类型?
- 参数数据类型未知的可变参数函数
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 如何将从第 2 个字符开始的字符串作为函数中的参数传递以进行递归,并约束数据 tiee 是函数中的字符串?
- 具有重载方法的可变参数数据结构
- 元数据操作失败LNK2022错误 (8013118D):重复类型中的布局信息不一致 (选择设备参数):(0x020002
- 模板 使用数据数组调用函数时扩展参数包
- 二进制数据作为命令行参数
- 使用 std::function 作为具有任意数量参数的数据成员
- pybind11:如何包装以 std::vector<double> 为参数以避免数据复制的 C++ 函数
- 类数据成员指针的非类型模板参数包无法使用 gcc 编译
- 我可以通过命令行参数传递给C++程序多少数据?
- 为什么指定数据类型而不是构造功能参数?C
- PostgreSql查询参数数据类型错误