2013-03-30 4 views
8

Ich möchte C++ Klasse in meinem ViewController aufrufen. So erstelle ich eine Klasse wie folgt: Hello.h"Empfängertyp für Instanznachrichten ist eine Vorwärtsdeklaration" 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 

Es funktioniert gut in der p roject: http://files.cnblogs.com/cpcpc/Objective-C%E8%B0%83%E7%94%A8C.rar

Aber wenn ich den Code in mein Projekt kopieren, wird der Fehler "Empfängertyp für Instanznachrichten ist eine Vorwärtsdeklaration" angezeigt.

Wenn ich "@class Hallo;" Um "Hello.h" zu importieren, scheint "Klasse Unkwon Typ, meinst du Klasse" Fehler in "Klasse NewHello".

Ich benutze xcode 4.6.Kann mir jemand helfen? Danke!

Antwort

18

Das Problem ist (wie Sie gesagt haben) Dateityp für ViewController.m ist Obj-C und Hello.h ist eine Obj-C++ Datei. Die Lösung ist

#import "Hello.h" 

auf Ihre ViewController.m Datei hinzufügen und die Dateityp ViewController.m zu Obj-C++ ändern (von der rechten Seite)

+0

Es funktioniert! Vielen viel Sie sehr! – Willen

+0

Dank es half viel :) –

Verwandte Themen