将结构传递给构造函数

Pass a structure to a constructor

本文关键字:构造函数 结构      更新时间:2023-10-16

我在这里做错了什么?我需要制作第二个按值接受结构的构造函数。

注.h

class Traymenu;
class Note : public QWidget
{
    Q_OBJECT
public:
    explicit Note(Traymenu *trayMenuIn, QWidget *parent = 0);  //Working
    explicit Note(Traymenu *trayMenuIn, struct prop bla, QWidget *parent = 0); //ERROR forward declaration of "struct prop"

注:H(交替)

class Traymenu;
struct prop;           //ERROR: forward declaration of "struct prop"
class Note : public QWidget
{
    Q_OBJECT
public:
    explicit Note(Traymenu *trayMenuIn, QWidget *parent = 0);
    explicit Note(Traymenu *trayMenuIn, struct prop bla, QWidget *parent = 0); //ERROR forward declaration of "struct prop"

注意.cpp

#include "note.h"    
Note::Note(Traymenu *trayMenuIn, struct prop bla, QWidget *parent) :  //ERROR: bla has incomplete type

您正在按值接受结构,这要求其完整定义在此时可用(它必须是complete type)。通过引用传递以避免这种情况:

Note(Traymenu*, const prop& bla); // reference to const is almost 
                                  // equivalent to pass by value

如果确实需要副本,请包括prop的定义。

如果要对需要完成的类型执行任何操作,则仍需要在实现文件中包括prop的定义。

在变量声明中省略 struct 关键字,它不是C++中必需的,我认为这是不好的风格。