我想做一些不寻常的事情。我有一个课程模板:
template<class T> class CFile
我想构建另一个具有int类型成员的类,
class foo
{
private:
int memb;
}
当我将“foo”类作为“&lt; T&gt;”传递时对于“CFile”,foo
应该只是作为整数。我需要想法如何仅使用foo
中的内部逻辑来实现它,而不更改CFile
(不允许CFile包含从类中提取int成员的任何逻辑)。
这是大学的任务,所以我不应该改变给我的规则。它应该是这样的:
class foo
{
int memb;
}
int main()
{
foo myFoo;
// The ctor of CFile takes a file path and opens the file. After that it can write
// members from type < T > to the file. I need the CFile to write the memb member to
// the file (Remember that the CFile is passed as < T >
CFile<foo> file("c:\\file.txt");
}
感谢。
答案 0 :(得分:1)
我认为你要做的是让class foo
充当整数。为此,您需要提供:
foo
创建int
的构造函数。foo
类强制转换为int
。你会有这样的事情:
class foo {
public:
foo() {} // Create a foo without initializing it
foo(const int &memb): _memb(memb) {} // Create and initialize a foo
operator int&() {return _memb;} // If foo is not constant
operator const int&() const {return _memb;} // If foo is constant
private:
int _memb;
};
答案 1 :(得分:0)
类似的东西:
ofstream file;
file.open("file.txt"); //open a file
file<<T; //write to it
file.close(); //close it
在CFile中,这加到了Foo:
ofstream &operator<<(ofstream &stream, Foo& foo)
{
stream << foo.memb;
return stream;
}