This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Objective-C++: passing Objective-C objects to C++ methods?
- From: <frederiksmith1942 at mac dot hush dot com>
- To: <gcc-help at gcc dot gnu dot org>
- Cc:
- Date: Sun, 12 Nov 2006 00:15:29 -0500
- Subject: Objective-C++: passing Objective-C objects to C++ methods?
I've run into some problems with Objective-C++ while using the gcc-
4.2-20061107 snapshot.
Passing a statically typed Objective-C object to a C++ function
with a parameter of type id works fine. However, I get compilation
errors when passing the same statically typed Objective-C object to
a method of a C++ class that has a parameter of type id.
I'm also getting errors when (in this case) I'm passing Objective-C
classes of type Test, but declared to be of type id, to C++ object
methods expecting an argument of type Test*.
I'm getting these errors:
test.mm: In function 'int main(int, char**)':
test.mm:51: error: no matching function for call to
'printer::print_Test(objc_object*&)'
test.mm:33: note: candidates are: void printer::print_Test(Test*)
test.mm:53: error: no matching function for call to
'printer::print_id(Test*&)'
test.mm:37: note: candidates are: void
printer::print_id(objc_object*)
Here is the test.mm code in question:
----8<-----
#import <stdio.h>
#import <objc/Object.h>
@interface Test : Object {
int i;
}
-(id) init:(int)n;
-(id) print;
@end
@implementation Test
-(id) init:(int)n {
i = n;
return self;
}
-(id) print {
printf("%d\n", i);
return self;
}
@end
class printer {
public:
void print_Test(Test* test) {
[test print];
}
void print_id(id test) {
[test print];
}
};
int main(int argc, char** argv) {
Test* test_Test = [[Test alloc] init:100];
id test_id = [[Test alloc] init:200];
printer p;
p.print_Test(test_Test);
p.print_Test(test_id);
p.print_id(test_Test);
p.print_id(test_id);
return 0;
}
----8<-----
While I can't test it myself at the moment, this code reportedly
works fine with Apple's compiler [1][2]. Is this a bug/restriction
with GCC's implementation of Objective-C++, or is the above code
incorrect?
Frederik
References
[1] http://lists.apple.com/archives/Cocoa-dev/2006/Nov/msg00544.html
[2] http://lists.apple.com/archives/Cocoa-dev/2006/Nov/msg00545.html
Concerned about your privacy? Instantly send FREE secure email, no account required
http://www.hushmail.com/send?l=480
Get the best prices on SSL certificates from Hushmail
https://www.hushssl.com?l=485