发起类作为struct的成员

用户名

我正在尝试创建一个内部带有struct成员的类:

.h文件:

class A
{
 public:

 struct Result 
 {
  int x;
  UGraph G;       <------ class definition
 };
 Result m_tempStructResult;

 A:A(void);
 void function();
}

.cpp文件

A::A()
{

}

void A::function()
{
 UGraph Graph(10);      <---- object has to receive a value

 ...
              //manipulations on Graph
 ...

 m_tempStructResult.G = Graph;
}

我得到的编译错误是:

error C2512: 'A::Result' : no appropriate default constructor available

所以我想的问题是缺少默认构造函数,所以我添加了以下内容:

struct Result
    {
        Result::Result(int graph_size=0) : G(graph_size){
        }

        int x;
        UGraph G;
    };

问题就解决了

我的问题是是否有另一种方法可以在类A的构造函数中初始化类UGraph G?而不是在其成员结构内?

谢谢。

大卫高

是的,请在的构造函数中使用初始化列表Result

Result::Result() : G(0)  // you have to insert some integer here
{

}

C ++ 11中的另一种方法是在类内部为其赋予默认值:

struct Result
{
    UGraph G = UGraph(10);
};

有关小型演示,请参见此处


编辑感谢@OthmanBenchekroun,我终于相信我理解了这个问题:

因此,这里是另一个示例代码,该示例使用聚合初始化来初始化的成员Result(而无需更改后者的构造函数)。

struct G
{
    G(int) {}
};

struct Result
{
    int x;
    G g;  
};

struct A
{
    A() : m_tempStructResult{1, G(1)} {}

    Result m_tempStructResult;
};

int main()
{
    A{};
}

这里的另一个演示

但是,这并不意味着我建议这样做。而是我会给Result一个适当的默认构造函数。否则,它可能变得无法使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

作为类成员的 struct 的 Stl 列表

来自分类Dev

数组作为类成员

来自分类Dev

匿名类作为类的成员

来自分类Dev

灵活的数组作为类成员

来自分类Dev

Lambda函数作为类成员

来自分类Dev

C ++ char *作为类成员

来自分类Dev

互斥体作为类的成员

来自分类Dev

使用std :: optional <A>作为A类的类成员

来自分类Dev

C ++将struct成员作为参数传递

来自分类Dev

通过“指向类成员的指针”访问作为数组的类成员

来自分类Dev

清除struct,它是C ++中的类的成员

来自分类Dev

不变类中的对象作为成员变量

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

c ++ 11向量作为类成员的线程

来自分类Dev

正确使用std :: map作为类成员

来自分类Dev

C ++对象实例作为类成员

来自分类Dev

对象作为C ++类中的成员变量

来自分类Dev

数组作为类javascript中的数据成员

来自分类Dev

C ++流参考作为类成员

来自分类Dev

WndProc作为类成员,无法退出

来自分类Dev

作为类成员管理指针向量

来自分类Dev

C ++向量作为类成员与函数

来自分类Dev

C ++对象实例作为类成员

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

Python迭代器作为类成员?

来自分类Dev

std :: vector迭代器作为类成员

来自分类Dev

不变类中的对象作为成员变量

来自分类Dev

数组作为类javascript中的数据成员

来自分类Dev

对象作为C ++中类的成员变量