以下代码在C++中无效
struct Test {
int x;
int y;
};
void function(Test A, int n = A.x) {
...
}
Run Code Online (Sandbox Code Playgroud)
因为默认参数Ax取决于A.有没有办法解决这个限制?我想要这样做的原因如下.我有一个类Vector,它与std :: vector非常接近,但有一个成员allocator_负责分配内存.我的拷贝构造函数有2个参数:
Vector(const Vector& A, Allocator& allocator) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果第二个参数具有默认值,则标准允许此类复制构造函数.但我希望allocator的默认值为A.allocator_,这就是我尝试过的原因
Vector(const Vector& A, Allocator& allocator = A.allocator_) {
...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不是有效的C++.你们中有谁有解决这个问题的方法吗?
最简单的解决方案是使用重载而不是默认参数:
void function(Test A, int n) {
...
}
void function(Test A) {
function(A, A.x);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |