我尝试为 C++ struct
定义构造函数,巧的是,这也是我要导出的结构。所以这是我的代码:
extern "C"__declspec(dllexport) typedef struct
{
double x;
double y;
PointCg(double xx, double yy);
}PointCg;
但是,我得到了一个编译错误,说明了这一点
error C4430: missing type specifier- int assumed. Note: C++ does not support default-int
但我认为这是一个完全有效的声明?
我正在使用 visual-c++ 2008,如果它对你很重要的话。
最佳答案
__declspec
与它没有任何关系。您正在定义一个匿名结构。 typedef 名称不适用于定义构造函数。在定义中,PointCg
只是看起来像一个函数名,函数必须有一个返回类型。这是在 C++ 中定义结构的方式:
struct PointCg{
//....
PointGc(double xx, double yy);
};
与 C 不同,您不需要 typedef 结构名称以避免在任何地方键入 struct
,并且可以只使用 PointCg
而不是 struct PointCg
当提到该类型时。
关于c++ - 与 __declspec(dllexport) 一起使用时,Struct 无法采用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659226/