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

    Errore Linker Objective C

    Raga qualcuno potrebbe spiegarmi perchè mi appare questo errore?
    In pratica è solo un programma di prova..Abbiamo 2 classi: ClasseA e ClasseB.
    ClasseB eredita da A i metodi ma ne sovrascrive uno. Di seguito il codice:

    main:

    codice:
    #import <Foundation/Foundation.h>
    #import "ClasseA.h"
    #import "ClasseB.h"
    
    int main(int argc, const char * argv[])
    {
    
       @autoreleasepool {
           
          ClasseA *istanzaClasseA = [ClasseA new];
          ClasseB *istanzaClasseB = [[ClasseB alloc]init];
          
          [istanzaClasseA initVar];
          [istanzaClasseA somma];
          
          [istanzaClasseB initVar];
          [istanzaClasseB somma];
          
       }
        return 0;
    }
    ClasseA.h e .m ( su due file separati):

    codice:
    @interface ClasseA : NSObject
    
    -(void)initVar;
    -(void)somma;
    
    @end
    
    
    #import "ClasseA.h"
    
    @implementation ClasseA
    {
       @protected
       int iVar;
       int iVar2;
    }
    
    -(void)initVar
    {
       iVar = 30;
       iVar2 = 70;
    }
    
    -(void)somma
    {
       iVar += iVar2;
       NSLog(@"Il valore di iVar corrente è %i", iVar);
    }
    
    @end
    Classe B .h e .m (anch'esso su file separati):

    codice:
    #import "ClasseA.h"
    
    @interface ClasseB : ClasseA
    
    -(void)initVar;
    -(void)somma;
    
    @end
    
    
    #import "ClasseA.m"
    #import "ClasseB.h"
    
    @implementation ClasseB
    
    -(void)initVar
    {
       iVar = 20;
       iVar = 30;
    }
    -(void)somma
    {
       iVar += iVar2;
       NSLog(@"Il valore di iVar corrente ora è %i", iVar);
    }
    @end
    L'editor non mi da ALCUN problema è in fase di compilazione che il linker mi da questo errore:

    SovrascritturaMetodo.build/Debug/SovrascritturaMetodo.build/Objects-normal/x86_64/ClasseB.o
    ld: 4 duplicate symbols for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Vi prego aiutatemi a capire perchè ho notato che se metto TUTTO il codice su una SOLA pagina, va alla grande....why??

  2. #2
    Nell' implementazione di ClasseB importi il ClasseA.m invece di ClasseA.h.

  3. #3
    NO purtroppo non va aiutoooooooo

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 © 2025 vBulletin Solutions, Inc. All rights reserved.