gpt4 book ai didi

c++ - 关于 C++ 类的问题(继承、变量作用域和函数)

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:58 25 4
gpt4 key购买 nike

我有一个包含一些数据的类:class DATA

现在我要创建一些使用这些数据的函数。我可以通过编写像 DATA::usedata();

这样的成员函数来轻松做到这一点

由于有数百个函数,我想在我的代码中保持顺序,所以我想要一些“类别”(不确定名称是否正确),例如:

DATA data;
data.memory.free();
data.memory.allocate();
data.file.import();
data.whatever.foo();

memoryfile 以及任何“类别”和freeallocate foo 是函数。

我尝试了继承方式,但我迷路了,因为我无法在 DATA 中声明内存或文件对象,出现错误 C2079:http://msdn.microsoft.com/en-us/library/9ekhdcxs%28VS.80%29.aspx

由于我不是程序员,请不要太复杂,如果您有更简单的方法,我会洗耳恭听。

最佳答案

为您的数据类提供一些自己的类,并让这些类引用包含它们的数据对象。听起来您可能已经尝试过这样做了。如果您遇到错误,那么您做错了其他事情。

struct DATA
{
struct DataMemory
{
DATA& data;
DataMemory(DATA& d): data(d) { }
void free();
void allocate();
};
struct DataFile
{
DATA& data;
DataFile(DATA& d): data(d) { }
void import();
};
struct DataWhatever
{
DATA& data;
DataWhatever(DATA& d): data(d) { }
void foo();
};

DataMemory memory;
DataFile file;
DataWhatever whatever;
DATA(): memory(*this), file(*this), whatever(*this) { }
};

每个内部类都有一个成员,该成员是对包含的 DATA 对象的引用。他们有构造函数来允许该成员被分配。 DATA 类本身也有一个构造函数,用于使用对自身的引用来初始化其每个成员。

您现在可以实现这些功能并引用 DATA 对象的任何成员。

void DATA::DataMemory::free()
{
data.whatever.foo();
}

内部类不需要是内部类;如果您愿意,它们可以是独立的顶级类,如 DATA,但我认为将它们嵌套有助于显示它们的相互依赖性。

关于c++ - 关于 C++ 类的问题(继承、变量作用域和函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com