zoukankan      html  css  js  c++  java
  • [总结]编程中遇到的vc提示的一些警告

    1、C4251

    原因:数据成员方在dll导出类中使用模板类引起的 ;

    方法:

    1>#program warning( disable:4251 )-->不推荐;

    2>将该数据成员改为指针方式(Ps:记住初始化和释放);

    3>将该模板类及其依赖类导出.eg:

    class __declspec( dllexport ) Test
    {
       public:
        template  class __declspec( dllexport ) std::allocator<int>;
        template  class __declspec( dllexport ) std::vector<int, std::allocator<int> >;
       public:
        std::vector<int> m_objCon;
    };
    

    这种方法要注意的是必须要把要导出模板类的模板数据成员一并导出。有点类似于显式实例化。比如说你要导出boost::shared_ptr就还必须将其依赖的shared_count一并导出。导出map还需要导出对应pair等等。

    4>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();
    }
  • 相关阅读:
    阿里云服务器购买后的配置指南
    第一阶段总结
    RDD的checkpoint机制和键值对RDD数据分区
    广播变量与累加器
    Spark的监控
    Spark和MR的区别
    hadoop离线项目处理流程
    Flume(一)
    Sparkcore高级应用3
    SparkCore高级应用2(Spark on yarn)
  • 原文地址:https://www.cnblogs.com/arsblog/p/4828183.html
Copyright © 2011-2022 走看看