O que é Objetivo C ++? [fechadas]


164

O que é o Objective C ++ e posso usar esta linguagem no Xcode?



O motivo mais próximo 'difícil de dizer o que está sendo perguntado' era um motivo antigo para encerrar uma pergunta. Atualmente, o motivo seria "amplo demais", pois o OP é realmente duas perguntas diferentes. Primeiro, explicar o Objective C ++ levaria várias páginas para endereçar, e segundo, a codificação para iOS é feita especificamente usando o Objective C e o XCode é o IDE padrão para o desenvolvimento do iOS, mesmo que os dois estejam relacionados, é uma pergunta muito grande. Esse tipo de pergunta deve ser movido para o site da documentação.
31578 Kelly S. French

1
@ DaveVoyles-MSFT: Estou tendo dificuldades para levar a sério alguém que acha que votar uma pergunta e o assassinato em massa mecanizado, industrializado, organizado e sistemático de mais de 6 milhões de pessoas são a mesma coisa.
Jörg W Mittag 03/02

3
@ JörgWMittag Desculpe, mas sua resposta foi encerrada como uma pergunta real pelos moderadores do Stack Overflow.
Dave Voyles

1
@ DaveVoyles-MSFT: O motivo do voto próximo "não é uma pergunta real" foi removido anos atrás.
Jörg W Mittag

Respostas:


157

O Objective-C ++ é simplesmente um código-fonte que combina as classes Objective-C e C ++ (duas entidades totalmente não relacionadas). Seu código C ++ funcionará, como antes, e o executável resultante será vinculado ao tempo de execução do Objective-C, portanto suas classes de Objective-C também funcionarão. Você pode definitivamente usá-lo no Xcode - nomeie seus arquivos com a .mmextensão.

Além disso, você pode ler a documentação da Apple (infelizmente excluída, mas arquivada) no Objective-C ++ .


2
a seção de limitação nesse link diz isso e vale a pena citar o Objective-C ++ não adiciona recursos de C ++ às classes de Objective-C, nem adiciona recursos de Objective-C às classes de C ++. Por exemplo, você não pode usar a sintaxe Objective-C para chamar um objeto C ++, não pode adicionar construtores ou destruidores a um objeto Objective-C e não pode usar as palavras-chave this e self interchangeably. As hierarquias de classe são separadas; uma classe C ++ não pode herdar de uma classe Objective-C e uma classe Objective-C não pode herdar de uma classe C ++. Além disso, o tratamento de exceção multi-idioma não é suportado
ASGs

33

Objective-C ++ é Objective-C (provavelmente com Cocoa Framework) com a capacidade de vincular-se ao código C ++ (classes prováveis).

Sim, você pode usar esse idioma no Xcode para desenvolver para Mac OS X, iPhone / iPodTouch, iPad. Funciona muito bem.

Você não precisa fazer nada de estranho no seu projeto para usar o Objective-C ++. Apenas nomeie seus arquivos Objective-C com a extensão .mm (em vez de .m ) e você estará pronto .

É minha arquitetura favorita: desenvolver uma biblioteca de classes base do meu jogo / aplicativo em C ++ para que eu possa reutilizá-lo em outras plataformas (Windows, Linux) e usar o Cocoa apenas para itens específicos da interface do usuário do iPhone / iPad .


10
Não se trata de vincular com C ++ - você quis dizer misturar ?
Georg Fritzsche

6

Se você deseja usar o Objective-c ++, mas não deseja nomear seus arquivos, .mmconfira minha resposta a uma pergunta semelhante .

Sem alterar nenhum .m para .mm ou algo assim, se você clicar no seu projeto, clique em tags-> configurações de compilação até "LLVM GCC 4.2 - Idiomas" (o novo xcode diz "Apple LLVM compiler 4.2" ) verá fontes de compilação à medida que altere esse valor para Objective-C ++ ;


4
enquanto você pode fazer isso, não é tão portátil e pode ser confuso para alguém que está tentando manter seu código em que .s é um cabeçalho e .r são arquivos de implementação.
Grady Player

de onde você está puxando .s e .r? Você pode usar .m padrão para arquivo de método e .h para cabeçalho, como se você usasse Objective-c simples.
John Riselvato

Estou apenas dizendo que .m significa alguma coisa, e fazê-la significar que outra coisa não é padrão.
Grady Player

No Objective-c para usar o vetor std (um c ++ std), eu precisaria do Objective-c ++ ativado. Não faria sentido criar uma extensão de tipo de arquivo diferente apenas para usar vetores dentro do meu código objetivo-c.
John Riselvato

13
absolutamente que seria, que seria usar 'cout' ou qualquer coisa que não é uma parte de C.
Grady Jogador
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.