2013-03-30 6 views
8

Voglio chiamare la classe C++ nel mio ViewController. Così ho creato una classe come questa: ciao.h"Il tipo di destinatario per i messaggi di istanza è una dichiarazione diretta" in xcode 4.6

#import <Foundation/Foundation.h> 

@interface Hello : NSObject{ 
    class NewHello{ 
    private:int greeting_text; 
    public: 
     NewHello(){ 
      greeting_text=5; 
     } 
     void say_hello(){ 
      printf("Greeting_Text = %d",greeting_text); 
     } 
    }; 
    NewHello *hello; 
} 
-(void)sayHellooooo; 
@end 

Hello.mm

#import "Hello.h" 
@implementation Hello 
-(void)sayHellooooo{ 
    hello = new NewHello(); 
    hello->say_hello(); 
} 
@end 

ViewController.h

#import <UIKit/UIKit.h> 
//#include "Hello.h" 
@class Hello; 

@interface ViewController : UIViewController{ 
} 
@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 
@end 
@implementation ViewController 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
     NSLog(@"dddddddd"); 
    Hello *aa = [[Hello alloc]init]; 
    [aa sayHellooooo]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 
@end 

E ' funziona bene nel p roject: http://files.cnblogs.com/cpcpc/Objective-C%E8%B0%83%E7%94%A8C.rar

Ma quando copio il codice nel mio progetto, appare "Errore di tipo destinatario per messaggi di istanza è una dichiarazione anticipata".

Se cambio "@class Hello;" per #import "Hello.h", appare "Unkwon type class, intendi l'errore Class" in "class NewHello".

Io uso xcode 4.6. Qualcuno può aiutarmi? Grazie!

risposta

18

Il problema è (come hai dichiarato) il tipo di file per ViewController.m è Obj-C e Hello.h è un file Obj-C++. La soluzione è quella di aggiungere

#import "Hello.h" 

al file ViewController.m e cambiare il tipo di file di ViewController.m a Obj-C++ (dal pannello di destra)

+0

Funziona! Grazie mille! – Willen

+0

Grazie ha aiutato molto :) –

Problemi correlati