相关疑难解决方法(0)

不允许指向不完整类类型的指针

出于某种原因,我无法使用附加到我想要使用的对象的函数.我在不起作用的行中添加了注释.作为一个错误,我得到"错误;不允许指向不完整类类型的指针"请帮助

这是dokter.ccp中的代码

int counter = 0;        
for (list<Wielrenner*>::iterator it = wielrenners.begin(); it != wielrenners.end(); it++){
    Wielrenner* wielrennerOB = *it;
    cout << "\nID: " << counter;
    cout << "List size: " << persons.size() << endl;

    wielrennerOB->print();  // This is not working
    counter++;
 }  
Run Code Online (Sandbox Code Playgroud)

这是wielrenner.h中的代码

#ifndef WIELRENNER_H_

#define WIELRENNER_H_

//#include <fstream>

#include "persoon.h"

#include "Onderzoek.h"

class Wielrenner :
public Persoon
{
public:
    Wielrenner(string, string, Adres, string, Datum, Datum, string, int, float, float, float,list<Onderzoek>* );
    ~Wielrenner(void);
    int     getLengte() const;
    float   getGewicht() const;
    float …
Run Code Online (Sandbox Code Playgroud)

c++ pointers iterator class list

51
推荐指数
3
解决办法
15万
查看次数

Qt5:如何将 QPointer 与前向声明类一起使用

问题:smart 替换裸指针,并将它们与前向声明的类一起使用。 QPointers

背景: 正如几乎所有关于现代 C++ 的文本所建议的那样,应该避免使用指针,而应使用智能指针。在 Qt 工具包中,有一组智能指针可用,在这种情况下我特别感兴趣:QWeakPointer(Qt 4) 或QPointer(Qt 5),据说可以与指针自由互换,并NULL在各自的指针时设置为对象(派生自QObject)被删除,从而有助于防止太常见的悬空指针问题。然而,QPointerbe指向的对象是QObject派生类型的要求阻止了前向声明类的使用。

问题:如何将QPointer-type 变量与类头中的前向声明类与前向声明类型结合起来?

或者

如何避免包含我想要使用的对象的整个头文件QPointer

例子:

#pragma once
#include <QObject>
#include <QPointer>

class MyQWidget; // Forward-declared class

class SomeClass {
   QPointer<MyQWidget> m_myWidget;
};
Run Code Online (Sandbox Code Playgroud)

注意:我已经阅读了这样的 wuestion: 在 C++ 中,是否可以将一个类向前声明为从另一个类继承?. 在我的问题中,我正在寻找特定于 Qt 的方法来克服此限制(或更好的设计功能),如果有的话。

编辑:我的主要编译器是 MSVC 2010,我得到的错误是

error C2079: 'MainWindow::m_test' uses …
Run Code Online (Sandbox Code Playgroud)

c++ qt forward-declaration qt5

2
推荐指数
1
解决办法
1599
查看次数

标签 统计

c++ ×2

class ×1

forward-declaration ×1

iterator ×1

list ×1

pointers ×1

qt ×1

qt5 ×1