依赖于模板的实现
Template dependent implementation
这是一段简单的代码:
#include <iostream>
#include <fstream>
template<typename T>
class A {
public:
T _v;
template<unsigned short V> void init() { _v *= V; }
void print(double txt) { std::cout << "Initialized with ?? : " << txt << std::endl; }
};
int main() {
A<double> foo;
foo._v = 3.5;
foo.init<2>();
foo.print(foo._v);
A<int> bar;
bar._v = 2;
bar.init<5>();
foo.print(bar._v);
}
我希望函数的实现A::print(double)
依赖于unsigned short V
,例如,将??
替换为init()
已从中实例化的unsigned short
。我的问题是:(a)它可行吗?(b) 如果(a),如何?
在搜索 if (a) 时,我想我可以在class A<T>
中添加一个函子,在 init()
中初始化它的状态(值为 V
),在 print(double)
中调用它,但我从未使用过这样的对象,所以我不知道这是否是要走的路。我基本上对任何建议持开放态度,我唯一需要的是对print
的调用保持不变(因为我将从其他不知道unsigned short V
值的类调用它。
谢谢!
一种方式:
template<typename T>
class A {
public:
T _v;
unsigned short _v2;
template<unsigned short V> void init() { _v2 = V; _v *= V; }
void print(double txt) { std::cout << "Initialized with "
<< _v2 << " : " << txt << std::endl; }
};
或者为什么不:
template<typename T, unsigned short V>
struct A {
T _v = V;
void print(double txt) { std::cout << "Initialized with "
<< V << " : " << txt << std::endl; }
};
相关文章:
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 为什么内存屏障依赖于变量?
- 反转依赖于 end() 的迭代器
- 编译依赖于 QTCore 库的 WASM
- 如何添加依赖于类本身的模板成员变量
- 初始化依赖于子类的继承类的常量类成员
- Makefile 创建两个库 - 一个依赖于另一个
- 对于BTreeMap和其他依赖于Ord的东西,是否有等效于C++比较器对象?
- 类成员函数参数列表是否可以依赖于模板参数?
- 依赖于类成员属性的类实例成员
- 如何让成员函数实现依赖于类的模板参数?
- 具有依赖于实现的成员函数类型的多个静态接口
- 依赖于姐妹类的类的实现
- 依赖于模板的实现
- 将 POD 联合双关到基本类型:依赖于实现或符合标准
- 依赖于实现的行为和未定义的行为之间有什么区别吗
- 依赖于构造函数参数的类方法的特殊实现
- c++字节依赖于实现
- 如何实现内部实现依赖于模板参数的类
- 枚举成员类型仍然依赖于实现