【发布时间】:2023-01-15 14:26:02
【问题描述】:
有一个函数通过使用指向输出的指针返回返回值:MPI_Comm_rank(MPI_Comm comm, int *rank)
有一个使用它的类
struct MyRank
{
int rank;
MyRank(MPI_Comm comm) {
MPI_Comm_rank(comm, &rank);
}
}
我想优雅地(例如通过一些 lambda 或其他单行代码)使 rank 成为 const 字段并在初始化列表中初始化它。
我可能会编写一个辅助函数并使用它:
int getRank(MPI_Comm comm) {
int rank;
MPI_Comm_rank(comm, &rank);
return rank;
}
struct MyRank
{
int const rank;
MyRank(MPI_Comm comm) : rank(getRank(comm)) {}
}
但它还多了 5 行。也许有更短的方法,例如使用 lambdas。有任何想法吗?
【问题讨论】:
-
优雅的东西是基于意见的。恕我直言,您的解决方案非常优雅。最小化代码行数通常会导致最不可读
-
不同的方法是将
rank设为私有和非常量。const成员其实很讨厌