

`QtCreator 4.7` `Qt5.11`で`mainwindow`プロジェクトを立ち上げました。

`pro`ファイルと、`h`ファイル、そして`cpp`ファイルの３つが自動で出来上がるのですけれども、意味不明なエラーが出ます。  
**mainwindow.cpp**

[code]

    #include "mainwindow.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show(); 
        return a.exec();
    }
    
[/code]

**出現エラー**

> cannot initialize object parameter of type 'QWidget' with an  
>  expression type 'MainWindow'

プロジェクトを立ち上げていただいて、全く改編をしていない初期状態のコードです。  
qt creator 4.7をインストールされてらっしゃる方はすぐに作れる状態です。一応タイトルが似た質問を見付けましたが[Cannot
initialize return object of type 'int' with an lvalue of type 'cocos2d::Scene
*'](https://ja.stackoverflow.com/questions/14892/cannot-initialize-return-
object-of-type-int-with-an-lvalue-of-type-
cocos2ds)は、cocoa2d-xのもので、qtではありませんでした。

一応他のコードも載せます。  
**mainwindow.h**

[code]

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
        class MainWindow : public QMainWindow
        {
            Q_OBJECT
    
        public:
            MainWindow(QWidget *parent = nullptr);
            ~MainWindow();
        };
    
        #endif // MAINWINDOW_H
    
[/code]

**mainwindow.pro**

[code]

            #-------------------------------------------------
        #
        # Project created by QtCreator 2018-09-14T16:52:20
        #
        #-------------------------------------------------
    
        QT       += core gui widgets
    
        TARGET = MainWindow
        TEMPLATE = app
    
        # The following define makes your compiler emit warnings if you use
        # any feature of Qt which has been marked as deprecated (the exact warnings
        # depend on your compiler). Please consult the documentation of the
        # deprecated API in order to know how to port your code away from it.
        DEFINES += QT_DEPRECATED_WARNINGS
    
        # You can also make your code fail to compile if you use deprecated APIs.
        # In order to do so, uncomment the following line.
        # You can also select to disable deprecated APIs only up to a certain version of Qt.
        #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
        CONFIG += c++11
    
        SOURCES += \
                main.cpp \
                mainwindow.cpp
    
        HEADERS += \
                mainwindow.h
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
[/code]

**追記：**  
問題が起きない方の環境だと、こうなります。  
qt 5.9.6  
qt-creator 4.7.0  
他は同じ。

ただし、コンパイラが、msvc2017であるのに対して、問題が起きるほうは、  
min-GW32が選ばれ、これは、`32bit`と書いてあります。おそらく、コンパイラ  
のセットが不十分であるために起るバグだろうと考えていますが、推測の域を出ません。  
インストール時に特に変わった設定はしていないつもりなのですが、なぜかこうなりました。

* * *

**実行環境**

Windows 10  
64bit  
qt-creator 4.7  
c++11  
qt 5.11


CC BY-SA 4.0
2018-09-14T07:32:17.893
48390
2022-01-28T07:06:00.637
2018-10-10T00:41:25.237
2238
24284
question
c++ windows-10 qt c++11 qt-creator
cannot initialize object parameter for "some widgets" with an expression type 'MainWindow'が起きるのはどうしてなのでしょうか。


`QtCreator`4.7だと、デフォルトで「コード解析」が自動実行されるようです。  
これが指摘するエラーについては、実際にコンパイルできるのであれば、無視してよいかと思います。

＃コンパイルが成功した後、再度コード解析を実行させるとエラーが消えると思います。  
＃UIファイルがあるプロジェクトを生成した場合、UIファイルから自動生成されるソースコードが生成される前にコード解析が実行されることがあり、エラーと判断されることがあるようです。


CC BY-SA 4.0
2018-09-15T13:20:47.227
48428
2018-09-15T13:20:47.227
20098
48390
answer