我有一个类,其构造函数如下所示:
Chunker::Chunker(int chunkSizeX, int chunkSizeY){
chunkX = chunkSizeX;
chunkY = chunkSizeY;
}
我想为用户提供使用 chunkSizeY
的能力或 chunkSizeX
有一个默认值(需要由 Chunker
计算)。
I.E 所以他们可能会传入一个“AUTO”关键字或其他东西,以便构造函数知道。
我可以做类似的事情吗:
Chunker::Chunker(int chunkSizeX, char chunkSizeY)
Chunker::Chunker(char chunkSizeX, int chunkSizeY)
Chunker::Chunker(char chunkSizeX, char chunkSizeY)
所以如果它得到一个 char
对于一个或两个值,它知道自动计算它们吗?
我确定他们一定是我还不知道的更好/标准的方式......?
最佳答案
你可以使用一个特殊的空类来帮助:
struct Default {};
class Chunker
{
public:
Chunker(int x, int y) : chunkX(x), chunkY(y) {}
Chunker(Default, int y) : chunkX(42), chunkY(y) {}
Chunker(int x, int Default) : chunkX(x), chunkY(42) {}
private:
int chunkX;
int chunkY;
};
用法:
Chunker c(1, 2);
Chunker cx(3, Default{});
Chunker cy(Default{}, 4);
或者使用“静态构建器”
class Chunker
{
public:
Chunker(int x, int y) : chunkX(x), chunkY(y) {}
static Chunker FromX(int x) { return Chunker(x, 42); }
static Chunker FromY(int y) { return Chunker(42, y); }
private:
int chunkX;
int chunkY;
};
用法:
Chunker c(1, 2);
Chunker cx = Chunker::FromX(3);
Chunker cy = Chunker::FromY(4);
关于C++重载;相同类型的可变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677896/