- 締切済み
C++でCの構造体をnewするとまずいのでしょうか?
以下のようなCで書かれたヘッダがあったとして ---testc.h--- typedef struct __Test { int i; char c[30]; char* x; } Test; これを以下のようにnewして使うのは問題ないでしょうか? ---test.cpp--- extern "C" { #include test.h } int main(void) { Test* test = new Test(); test->i = 30; test->c[3] = 'a'; test->x = "aiueo"; return 0; }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス >この手の typedef を見るたびに思うんだけど, なんで ↑ 構造体の名前は別々に管理されているので同名を使えます。 きっと違う名前を付けなければいけないと思うのでしょう。 typedef struct 名前1 { : } 名前2; 『名前1』と『名前2』は同じでも良いのです。
- Tacosan
- ベストアンサー率23% (3656/15482)
基本的には大丈夫だけど強いていえば「__ で始まるタグは避けた方が安全」かな. この手の typedef を見るたびに思うんだけど, なんで typedef struct Test { .... } Test; ってしないのかなぁ?
お礼
_がついているのはシステム予約されていたりするみたい記述を みかけたことがあります。 回答ありがとうございました。
- rinkun
- ベストアンサー率44% (706/1571)
特に問題はないと思いますけど。 C++において構造体はクラスの一種です。デフォルトでメンバがpublicになるくらいしか違いはなかったと思います。
お礼
デフォルトのアクセス指定子がpublicになるだけなのですね。 回答ありがとうございました。
お礼
ありがとうございます。 同じ名前でもよいというのを初めて知りました。