C/C++ warning C4251 需要有 dll 接口由 class“..” 的客户端使用

原创
2021/10/25 19:50
阅读数 1.2K
AI总结

第一种: 无视它或者#pragma warnind( disable: 4251 )
第二种:将该数据改为指针方式:
class __declspec( dllexport ) Test
{
public:
std::vector<int>* m_objCon;
};
然后在构造函数和析构函数中分别初始化和释放它。
第三种:
将该模板类及其依赖类导出。
#include <iostream>
#include <vector>
using namespace std;

class __declspec( dllexport ) Test


第四种:Impl。
#include <iostream>
#include <vector>
using namespace std;

// 这些放到.h中
class Test_imp;
class __declspec( dllexport ) Test
{
    // 构造函数中初始化 析构中释放m_pImp;
    void test();

public:
    Test_imp* m_pImp;
};

// 这个类放到cpp中去
class  Test_imp
{
public:
    void test(){}
    std::vector<int> m_objCon;
};


// 放到cpp中
void Test::test()
{
m_pImp->test();
}

}

建议第四种方法

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部