C++ 使用静态成员函数构造对象
我有一个静态函数,它填充通过引用传递的对象,并返回一个整数来表示错误或成功C++ 使用静态成员函数构造对象,c++,C++,我有一个静态函数,它填充通过引用传递的对象,并返回一个整数来表示错误或成功 static int readDeformationGrid(const std::string& gridFile, DeformationGrid& defgrid) 是否可以使用相同的静态成员函数初始化对象?这是个坏主意吗 差不多 DeformationGrid(const std::string& gridFile)
static int readDeformationGrid(const std::string& gridFile,
DeformationGrid& defgrid)
是否可以使用相同的静态成员函数初始化对象?这是个坏主意吗
差不多
DeformationGrid(const std::string& gridFile)
{
int ret = DeformationGrid::readDeformationGrid(gridFile, *this);
if(ret < 0)
throw std::invalid_argument("Error reading deformation grid file " + gridFile);
}
变形网格(const std::string和gridFile)
{
int-ret=DeformationGrid::readDeformationGrid(gridFile,*this);
如果(ret<0)
throw std::无效的_参数(“读取变形网格文件时出错”+gridFile);
}
还是应该使用工厂模式
例如,我认为这样的东西在可重构对象中很有用。方法和构造函数将共享相同的代码,因此将其放在第三个成员函数上是有意义的,因为在第二种情况下,它可能还没有对象
如何在构造函数上调用这样的方法?出于兴趣,为什么不能使用构造函数?在编写“构造函数”时,您的意思是“初始化”,对吗?为什么需要静态成员函数?如果删除默认构造函数并应用@Bathsheba的注释,则可以假定对象始终处于一致状态。因为我想提供一个静态方法来填充预先存在的
DeformationGrid
。虽然在我的例子中你是对的,但我可以提供构造函数来完成这项工作。@alexeykuzmin0你是对的。出于兴趣,为什么你不能使用构造函数?写“构造”时,你的意思是“初始化”,对吗?为什么你需要静态成员函数?如果删除默认构造函数并应用@Bathsheba的注释,则可以假定对象始终处于一致状态。因为我想提供一个静态方法来填充预先存在的DeformationGrid
。虽然在我的例子中你是对的,但我可以提供构造函数来完成这项工作。@alexeykuzmin0你是对的。