我如何创建一个类,可以给我C4251警告
How could I create a class that can give me C4251 warning
当我们在VC中编译代码时,我们有些东西有C4251警告。在我的例子中,大多数警告来自这样一个事实,即STL是_declspec(dllexport)
类的成员。为了深入理解警告,我计划创建一个类来触发警告。我尝试了以下案例,但是没有给出C4251警告,我想知道是否可以给出一个简单的例子。谢谢!
我试过的案例:
class _declspec(dllexport) ClassTest
{
public:
ExportClass<int> myexport;
ClassUse myuse;
int i;
};
案例1:
template <typename T>
class ExportClass
{
public:
T a;
T b;
};
案例2:
class ClassUse
{
public:
int counts;
float f_value;
std::vector<int> abc;
void get_func();
template <typename T>
T ouput_value()
{
return static_cast<T>(3);
};
template<class T>
int connected()
{
T abc;
return 3;
}
};
编辑:我想说清楚,警告不会来自调用STL。
在这种特殊情况下,您应该考虑MSDN:
编译器警告(级别1)C4251
'identifier':类'type'需要有dll接口供类'type2'的客户端使用
当
// C4251.cpp
// compile with: /EHsc /MTd /W2 /c
#include <vector>
using namespace std;
class Node;
class __declspec(dllimport) VecWrapper : vector<Node *> {}; // C4251
本页给出了一个给出警告消息的类的示例。
如果您希望生成警告消息而不使用STL,请参见以下示例:
class __declspec(dllimport) Foo
{
public:
Foo();
CString m_str; // WARNING C4251 HERE
};
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 如何修复编译器警告 C6386 和 C6385?
- 返回语句后的代码,没有警告
- 获取隐式转换溢出从无符号到已签名的警告
- 编译器警告:执行到达值返回函数的末尾而不返回值
- Ogre 如何在没有 C4251 警告的情况下在导出类中使用 STL 容器
- 我如何创建一个类,可以给我C4251警告
- 在Microsoft Visual c++ 2015中编译DLL -警告C4251需要有DLL接口供类的客户端使用-当使
- 在dll接口中使用静态类时消除C4251警告的一种方法
- 编译器警告C4251:在*.dll中导出类时出现问题