c++ - 将结构传递给构造函数

标签 c++ qt

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

注意.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"

note.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

最佳答案

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

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

如果确实需要复制,请包括 prop 的定义。

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

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

关于c++ - 将结构传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021583/

相关文章:

c++ - 如何在 rxcpp 中处理请求/响应流

javascript - "Hello World"+ JS V8 + VS2010

c++ - 为什么 vector<bool> 不是 STL 容器?

c++ - QT/C++ 使用按钮调用类函数

C++ 只移动对象 - 从赋值运算符返回什么

c++ - 使用非虚拟析构函数有什么具体原因吗?

c++ - qt gui从windows移植到linux

c++ - 在 Qt 中测试一个操作花费多少时间的最简单方法

c++ - 断点 : Break when c++ exception is thrown - why so slow?

windows - 模糊的 Qt 快速文本