• 締切済み

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; }

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス >この手の typedef を見るたびに思うんだけど, なんで  ↑  構造体の名前は別々に管理されているので同名を使えます。  きっと違う名前を付けなければいけないと思うのでしょう。    typedef struct 名前1 {  :  } 名前2;    『名前1』と『名前2』は同じでも良いのです。

rotofrot
質問者

お礼

ありがとうございます。 同じ名前でもよいというのを初めて知りました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

基本的には大丈夫だけど強いていえば「__ で始まるタグは避けた方が安全」かな. この手の typedef を見るたびに思うんだけど, なんで typedef struct Test { .... } Test; ってしないのかなぁ?

rotofrot
質問者

お礼

_がついているのはシステム予約されていたりするみたい記述を みかけたことがあります。 回答ありがとうございました。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

特に問題はないと思いますけど。 C++において構造体はクラスの一種です。デフォルトでメンバがpublicになるくらいしか違いはなかったと思います。

rotofrot
質問者

お礼

デフォルトのアクセス指定子がpublicになるだけなのですね。 回答ありがとうございました。

関連するQ&A