IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Mise en place d'un tube sous QtCreator : no matching function for call to 'MainWindow::close(int&)'


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 375
    Par défaut Mise en place d'un tube sous QtCreator : no matching function for call to 'MainWindow::close(int&)'
    Bonsoir à tous,

    Ayant réalisé mon tube par les E/S standard, je cherche à l'implanter dans mon programme .cpp sous QtCreator.

    Il s'avère que j'ai un problème de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mainwindow.cpp: erreur : no matching function for call to 'MainWindow::close(int&)'
             close(fds[0]);
                         ^
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
     
    #include <stdio.h>
     
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
     
    #include <fcntl.h>
    #include <sys/stat.h>
     
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <cstdlib>
    #include <stdlib.h>
     
    #include <qwt_plot_curve.h>
    #include <QColorDialog>
     
    using namespace std;
     
    //CONSTRUCTEUR
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
     
    //DESTRUCTEUR
    MainWindow::~MainWindow()
    {
        delete ui;
    }
     
    //ACQUISITION DES DONNEES
    void MainWindow::on_pushButton_clicked()
    {
     
     
        char integration_time_char[15];
        int integration_time=10000000;
        sprintf (integration_time_char,"%d",integration_time); //conversion de l'int en décimal pour le char
     
        /* create the pipe */
        int  fds[2];
        if (pipe(fds) == -1)
          {
            printf("pipe failed\n");
            //return 1;
          }
     
        /* create the child */
        int  pid;
        if ((pid = fork()) < 0)
          {
            printf("fork failed\n");
            //return 2;
          }
     
        if (pid == 0)
          {
            /* child */
            //char buffer[20];
     
            close(fds[0]);
            dup2(fds[1], STDOUT_FILENO);
            execl("/Test/Acquisition","Acquisition",integration_time_char,NULL);
            close(fds[1]);
     
     
          }
        else
          {
            /* parent */
            waitpid(pid,NULL,0);
            char buffer[1000];
     
            close(fds[1]);
            dup2(fds[0], STDIN_FILENO);
     
            while (read(fds[0], buffer, 1000) != 0)
              printf("%s\n", buffer);
     
            close(fds[0]);
     
              //printf("%s", buffer);       printf("%s", buffer);       printf("%s", buffer);
           //std::cout << buffer << std::endl;
     
          }
    }
    Je ne vois pas comment faire pour que QtCreator se serve des fonctions close et autres qui sont plutôt système. Le problème c'est que je suis dans la classe MainWindows purement orienté Objet.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    MainWindows purement orienté Objet
    Ca n'existe pas en C++, le purement orienté objet, le C++ est multi-paradigme, tout le temps.
    Alors faites le comme si vous étiez dans une fonction libre.
    Si des fonctions libres sont "cachée" par les méthodes de la classe, utilisez le préfixe "::" devant le nom de ces fonctions libres.

Discussions similaires

  1. Mise en place d'une CVthèque sous Excel
    Par thomas.c37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/09/2015, 21h11
  2. [XL-2010] Mise en place d'un facturier sous Excel
    Par Maidhy dans le forum Excel
    Réponses: 4
    Dernier message: 01/11/2014, 19h05
  3. [Débutant] Mise en place d'une application sous réseau
    Par eemii dans le forum C#
    Réponses: 2
    Dernier message: 13/11/2013, 08h43
  4. Mise en place d'un reseau sous linux
    Par doumbix dans le forum Administration
    Réponses: 4
    Dernier message: 17/06/2013, 12h56
  5. Mise en place d'un plugin sous Firefox et Safari
    Par Tony36 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/12/2011, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo