- 主题:请教: 通过 文件 初始化子类
父类和子类都有成员变量, 值存在文件中。 怎么能用构造函数初始化。
谢谢!
--
FROM 61.178.84.*
奇怪的需求
构造中初始化为默认值,然后弄个Load()/Deserialize()之类的成员函数单独调用,不也一样?
或者在构造中调用Load()/Deserialize(),不抛异常就行吧
--
FROM 114.241.228.*
谢谢回复! 或者这么问: 我在父类的构造函数中打开一个文件, 子类中怎么从这个文件中读取数据?
【 在 z16166 的大作中提到: 】
: 奇怪的需求
: 构造中初始化为默认值,然后弄个Load()/Deserialize()之类的成员函数单独调用,不也一样?
: 或者在构造中调用Load()/Deserialize(),不抛异常就行吧
--
FROM 61.178.84.*
父类弄个读文件的成员函数给子类调用
【 在 fangniuwawa 的大作中提到: 】
: 谢谢回复! 或者这么问: 我在父类的构造函数中打开一个文件, 子类中怎么从这个文件中读取数据?
:
--
FROM 114.241.228.*
父类里提供个文件读取的接口,子类里调用就行了。
不过你这么设计本身就是错的。文件读取是可能失败的,不应该把有失败风险的函数放构造函数中。
【 在 fangniuwawa 的大作中提到: 】
: 父类和子类都有成员变量, 值存在文件中。 怎么能用构造函数初始化。
: 谢谢!
--
FROM 117.136.38.*
谢谢!
【 在 dormouseBHU 的大作中提到: 】
: 父类里提供个文件读取的接口,子类里调用就行了。
: 不过你这么设计本身就是错的。文件读取是可能失败的,不应该把有失败风险的函数放构造函数中。
--
FROM 61.178.84.*
目测你要在父构造函数里调虚函数,这时子类还没初始化,虚函数调不过去。
每个类实现一个Create函数,接收一个文件句柄(或等价物),返回智能指针,
每个类实现一个虚的_InitFromXFile,接收句柄,内部读取并赋值。
讲究点会在基类加个非虚的InitFomeXFile,里面调用虚的版本。
打开文件是类体系之外的控制流程做的。
【 在 fangniuwawa 的大作中提到: 】
: 谢谢!
--
FROM 113.137.164.*
嗯, 就是感觉有点丑
【 在 z16166 的大作中提到: 】
: 父类弄个读文件的成员函数给子类调用
:
--
FROM 61.178.84.*
我觉得还是直接用现有的序列化方案,不要搞奇技淫巧。
--
FROM 101.88.154.*
不要在构造函数做这种操作,而应该是外部代码调用类的静态函数构造/保存一个类。
classA classA::LoadFrom(const string& file)
void classA::SaveTo(const string& file)
【 在 fangniuwawa 的大作中提到: 】
: 谢谢回复! 或者这么问: 我在父类的构造函数中打开一个文件, 子类中怎么从这个文件中读取数据?
:
--
FROM 114.255.33.*