Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++] problema costanti in classe

    Salve,

    nel file di dichiarazione di una mia classe uso delle costanti e inizializzo altre classe perchè mi serviranno globalmente nella mia classe che funge semplicemente da wrapper:

    Codice PHP:
    #ifndef WAVEINPUTENCODE_H
    #define WAVEINPUTENCODE_H

    #include <windows.h>
    #include <algorithm>
    #include "waveCapture.h"
    #include "mp3Encoder.h"

    // Lame DLL Path
    const char szDllPath TEXT("lib/lame_enc.dll");

    // Init waveCapture Class
    waveCapture wc(44100162); // Samples, BitsPerSample, Channels

    // Init mp3Encoder Class
    mp3Encoder mp3(szDllPath);

    // Declare Class
    //
    class waveInputEncode
    {
    public:
        
    // Costruttore e Distruttore
        
    (...) 
    quando compilo ottengo questo:

    "char const * const szDllPath" (?szDllPath@@3PBDB) already defined in waveInputEncode.obj
    "class waveCapture wc" (?wc@@3VwaveCapture@@A) already defined in waveInputEncode.obj
    "class mp3Encoder mp3" (?mp3@@3Vmp3Encoder@@A) already defined in waveInputEncode.obj
    non riesco proprio a capire quale possa essere il problema
    Alla batteria dai retta ballA

  2. #2
    Stai definendo della roba in un .h, il che non va bene, perché vorrà dire che verrà definita in ogni .cpp in cui lo andrai ad includere. Piuttosto, metti quelle definizioni in un .cpp e nel .h mettici solo le loro dichiarazioni come extern.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    come faccio a mettere le loro dichiarazioni e basta?

    ho provato a mettere questo nell header file della classe:

    Codice PHP:
    // Lame DLL Path
    static const char szDllPath TEXT("lib/lame_enc.dll");

    // Init waveCapture Class
    static waveCapture wc(44100162); // Samples, BitsPerSample, Channels

    // Init mp3Encoder Class
    static mp3Encoder mp3(szDllPath); 
    Alla batteria dai retta ballA

  4. #4
    o forse intendi di mettere questo solo nel file cpp della class?

    waveInputEncode.cpp
    Codice PHP:
    #include "waveInputEncode.h"

    // Lame DLL Path
    extern const char szDllPath TEXT("lib/lame_enc.dll");

    // Init waveCapture Class
    extern waveCapture wc(44100162); // Samples, BitsPerSample, Channels

    // Init mp3Encoder Class
    extern mp3Encoder mp3(szDllPath); 
    ho provato in questo modo senza poi aggiungere niente nel file .h e devo dire che funziona cmq bene!
    Alla batteria dai retta ballA

  5. #5
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    ok ma lo stesso vale anche per questo?

    file.h
    codice:
    // Init waveCapture Class
    extern waveCapture wc;
    
    // Init mp3Encoder Class
    extern mp3Encoder mp3;
    in quel caso non potrei perchè fallirebbero i costruttori di quelle altre classi :-(
    Alla batteria dai retta ballA

  7. #7
    Vale per tutto; quali altre classi?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.