Is it possible to subclass a C struct in C++ and use pointers to the struct in C code?

后端 未结 10 1185
滥情空心
滥情空心 2021-02-07 00:10

Is there a side effect in doing this:

C code:

struct foo {
      int k;
};

int ret_foo(const struct foo* f){ 
    return f.k; 
}

C++ c

10条回答
  •  耶瑟儿~
    2021-02-07 00:52

    “Never derive from concrete classes.” — Sutter

    “Make non-leaf classes abstract.” — Meyers

    It’s simply wrong to subclass non-interface classes. You should refactor your libraries.

    Technically, you can do what you want, so long as you don’t invoke undefined behavior by, e. g., deleting a pointer to the derived class by a pointer to its base class subobject. You don’t even need extern "C" for the C++ code. Yes, it’s portable. But it’s poor design.

提交回复
热议问题