c++ - 与 __declspec(dllexport) 一起使用时,Struct 无法采用构造函数

标签 c++ visual-c++

我尝试为 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/

相关文章:

visual-c++ - 使用 MSVC 2013 进行静态变量初始化时崩溃

c++ - 编译器将 string& 转换为 basic_string<>&

c++ - 检查该函数是否已在 gtest 中调用

c++ - emplace_back 和 VC++ 的挫败感

第一次循环迭代后将字符串更改为 NULL。内存分配

visual-c++ - C++链接错误,符号重定义

c++ - SSL/TLS 协议(protocol)版本回退机制

c++ - 在 C++ 中使用 SSE2 SIMD 对两个数组求和的正确方法

c++ - 编写值包装器类的最佳方法

c++ - 等价于 C++ 中来自 Java 的枚举的 .values()