假设我有一个类:
class A {
protected:
vector<double> p1;
vector<double> p2;
...
vector<double> pn;
public:
//Constructors and destructor
void SetP1( int, double );
void SetP2( int, double );
...
void SetPn( int, double );
};
所有 setter 定义的结构都是相同的。我很不高兴在这里看到这个复制粘贴。有没有 C++
的风格来摆脱这个?
最佳答案
class A {
public:
enum {count = 55};
protected:
std::array<std::vector<double>, count> p;
public:
//Constructors and destructor
template<std::size_t N>
void SetP( std::size_t x, double d ) {
static_assert( N<count, "out of bounds" );
// I assume we want auto-resize:
if (x >= p[N].size()) p[N].resize(x+1);
p[N][x] = d;
}
};
使用:
A a;
a.SetP<22>( 7, 3.14 );
关于c++ - C++中许多具有相同结构的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744532/