Objective-C++0xなう

Objective-Cとは

SmalltalkOOPC言語にくっつけた、Mac王国の公用語。

Objective-C++とは

Objective-CC++をとりあえず一緒にした謎言語。

Objective-C++0x(造語)とは

Objective-C++でC++0xを有効にした超言語。

Install(Ubuntu)

% sudo aptitude install gobjc++

Makefile

#!/bin/make

CXX = g++
CXXFLAGS = -O2 -Wall -std=c++0x
LDFLAGS = -lobjc
OBJS = hello

.PHONY: all clean
.SUFFIXES: .mm .o

.mm:
	$(CXX) $(LDFLAGS) $(CXXFLAGS) $< -o $@
.mm.o:
	$(CXX) $(CXXFLAGS) -c $< -o $@

all: $(OBJS)

clean:
	$(RM) $(OBJS)

hello.mm

#import <iostream>
#import <objc/Object.h>
using namespace std;

@interface TestClass1 : Object
- (void) hello;
@end
@implementation TestClass1
- (void) hello {
    cout << "Hello, Objective-";
}
@end

class TestClass2
{
public:
    void world() {
        cout << "C++ world!" << endl;
    }
};

int main(int argc, char **argv)
{
    id obj1 = [ TestClass1 alloc ];
    [ obj1 hello ];
    [ obj1 free ];

    auto *obj2 = new TestClass2();
    obj2->world();
    delete obj2;
    return 0;
}

autoのあたりが、さりげなくC++0x機能。