電子書籍の厳選無料作品が豊富!

Visual C++を使っていると、^(アクサンシルコンフレックス)も*(アスタリスク)も両方ポインタとして利用しているようなのですが、^はクラスを使用するときに使用するポインタと言うことでしょうか?
また、これらはどの様に使い分けられているのでしょうか?

A 回答 (4件)

^ はC++/CLIのハンドル型です


ポインタと大体同じように使えますが、ポインタと同じものとして頭に入れてはいけません
GC対象に入るので値が一定である保証もなくC/C++のポインタとの相互変換は出来ません

参考URL:http://ja.wikipedia.org/wiki/C%2B%2B/CLI
    • good
    • 0
この回答へのお礼

なるほど、マネージ型を示すポインタに関して^を使うと言うことですか。
ということは、C++/CLRで.NetFrameworkを使用しないクラスとか関数を作れるということですか?
また、作れるのならどの様にして作れば良いのでしょうか?

お礼日時:2009/04/01 21:45

.NETを使わないという意味を誤って取ったようです


そういう事なら#pragma unmanagedがその用途だと思います

参考URL:http://www.google.co.jp/search?q=pragma+unmanaged
    • good
    • 0
この回答へのお礼

なるほど、どうも有り難うございました。

お礼日時:2009/04/02 18:49

作れません


C++/CLIでコンパイルすれば.NET Frameworkのmscoree.dllにリンクされます
.NETを使用しなくするならただのC++にしかなれません
    • good
    • 0
この回答へのお礼

http://ja.wikipedia.org/wiki/C%2B%2B/CLI
に、
「マネージ拡張C++には、2種類のポインタが存在した。従来からのC++ポインタである__nogcポインタと.NETの参照型オブジェクトを指す__gcポインタである。一方C++/CLIでは、ポインタはC++のポインタしかなく、.NETの参照型のオブジェクトを指すものは「ハンドル」と呼称することになった。ハンドル型はクラス名*に代わってクラス名^という構文を使う。これにより、.NETでガベージコレクションされるオブジェクトとそうでないものとが明確になり、マネージドとアンマネージドが混合しているコードが分かりやすくなった。」

との記載があるのですが、これの、「マネージドとアンマネージドが混合しているコードが分かりやすくなった。」と書かれているのは、インターフェイス部を.Netで、メインの演算部を.Netを介さず動かすような混合のプログラムが書けると言うことではないのですか?

お礼日時:2009/04/01 23:23

基本中の基本なのでまずは一冊教本を用意することをお勧めします。


文法/構文知らずしてコードが書けるわけないし。
    • good
    • 0
この回答へのお礼

何か、良い本があるのならそれを教えていただけるとありがたいです。

お礼日時:2009/04/01 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!