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:
ClasseA.h e .m ( su due file separati):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; }
Classe B .h e .m (anch'esso su 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
L'editor non mi da ALCUN problema è in fase di compilazione che il linker mi da questo errore: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
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??![]()
![]()
![]()
![]()
![]()

Rispondi quotando