C++;包含数组的类 我开始了一个C++应用程序项目,它基本上有一个对象类作为它的核心来保存数据,然后一些函数将处理该对象的数据以获得所需的信息。我以前在VB.net写过类似的,以前我用C++编写过小程序,但是这是在图尔博C++中,不包括创建我自己的类。我想用VC++写这篇文章,在开始之前,我想征求一些关于构建这个类的建议。 当我在VB.net中完成类似的工作时,我使用了在主结构中嵌套结构和函数的方法。例如: Public Structure struct_Tags Public Structure struct_TagProps Public Name As String Public Value As String End Structure Public TagName As String Public TagProperties() As struct_TagProps Public Function HasProperties() As Boolean HasProperties = False If Not TagProperties Is Nothing Then HasProperties = True End If End Function End Structure Dim obj_Tags() As struct_Tags 公共结构结构标记 公共结构结构道具 公共名称作为字符串 作为字符串的公共值 端部结构 作为字符串的公共标记名 Public TagProperties()作为struct\u TagProps 公共函数HasProperties()为布尔值 HasProperties=False 如果不是,那么属性什么都不是 HasProperties=True 如果结束 端函数 端部结构 Dim obj_标记()作为结构_标记

C++;包含数组的类 我开始了一个C++应用程序项目,它基本上有一个对象类作为它的核心来保存数据,然后一些函数将处理该对象的数据以获得所需的信息。我以前在VB.net写过类似的,以前我用C++编写过小程序,但是这是在图尔博C++中,不包括创建我自己的类。我想用VC++写这篇文章,在开始之前,我想征求一些关于构建这个类的建议。 当我在VB.net中完成类似的工作时,我使用了在主结构中嵌套结构和函数的方法。例如: Public Structure struct_Tags Public Structure struct_TagProps Public Name As String Public Value As String End Structure Public TagName As String Public TagProperties() As struct_TagProps Public Function HasProperties() As Boolean HasProperties = False If Not TagProperties Is Nothing Then HasProperties = True End If End Function End Structure Dim obj_Tags() As struct_Tags 公共结构结构标记 公共结构结构道具 公共名称作为字符串 作为字符串的公共值 端部结构 作为字符串的公共标记名 Public TagProperties()作为struct\u TagProps 公共函数HasProperties()为布尔值 HasProperties=False 如果不是,那么属性什么都不是 HasProperties=True 如果结束 端函数 端部结构 Dim obj_标记()作为结构_标记,c++,C++,这种方法在VB.net中工作得很好,每当需要在处理循环中时,我都会用+1动态地重新定义obj_标记()和obj_标记().TagProperties()。但是我的研究告诉我,在C++中,我的类中不能有空属性数组的TAGESTATICS结构变量。这是正确的吗?我无法预先知道数组边界是什么,那么如何设置这个类来动态改变数组边界呢?通过使用向量?只要可以动态地向数组添加维度,就可以使用[0]绑定初始化数组。可能吗?提前感谢您的帮助。取决于您需要哪种阵列: 如果您需要动态分配(可变大小)数组,请选择一个

这种方法在VB.net中工作得很好,每当需要在处理循环中时,我都会用+1动态地重新定义
obj_标记()
obj_标记().TagProperties()
。但是我的研究告诉我,在C++中,我的类中不能有空属性数组的TAGESTATICS结构变量。这是正确的吗?我无法预先知道数组边界是什么,那么如何设置这个类来动态改变数组边界呢?通过使用向量?只要可以动态地向数组添加维度,就可以使用[0]绑定初始化数组。可能吗?提前感谢您的帮助。

取决于您需要哪种阵列:

如果您需要动态分配(可变大小)数组,请选择一个


如果您需要一个更简单、无法调整大小的数组,请查看。

创建数组的最佳方法是使用
std::vector
。如果使用
[]
表示法使用经典数组,则无法在运行时再次调整数组的大小。您需要创建一个新数组并将旧数组复制到其中,然后删除旧数组。无论如何,这是一件复杂的事情,正如其他人所说,只要使用
std::vector

就可以了,等价物是
std::vector
。请阅读你的C++书籍。我阅读了这个网站的信息,并在网上阅读了很多信息。我想要的是一些建议,把所有这些都放在正确的角度,我非常感谢我在这里得到了这些建议。感谢您回复中的建议部分。:)谢谢你的建议,也谢谢你花时间给我举个很好的例子,ybungalobill。这对我来说真的很清楚,非常感谢。感谢所有其他类似的建议,这对我很有帮助。好奇的是,对象是结构中的结构,而不是类中的结构,这有什么好处吗?@Dave:看到了吗
struct struct_Tags {
    struct struct_TagProps  {
        string Name;
        string Value;
    };
    string TagName;
    vector<struct_TagProps> TagProperties;  
    bool HasProperties() const {
        return !TagProperties.empty().
    }
};
vector<struct_Tags> obj_Tags;
struct_Tags newValue;

struct_Tags::struct_TagProps newProps = { "my name", "my value" };
newValue.TagProperties.push_back(newProps);

obj_Tags.push_bcak(newValue);