here で説明されているように、コードをコンパイルするときに C4251 警告が表示される理由を理解しています。私の質問は、アクセス可能なエクスポート クラス メンバーが STL からのものである場合、C4251 警告を無視できますか? 私の質問を説明するために簡単な例を挙げます。
dll.h
#include <iostream>
#include <string>
using namespace std;
class __declspec(dllexport) HelloWorld
{
public:
string name;
HelloWorld();
HelloWorld(const string &str);
};
dll.cpp
#include "dll.h"
HelloWorld::HelloWorld()
{
name ="";
}
HelloWorld::HelloWorld(const string &str)
{
name = str;
}
私が取得した警告情報は次のとおりです。
Warning 1 warning C4251: 'HelloWorld::name' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'HelloWorld' *\dll.h 9
私の質問は、この警告を無視できますか? このライブラリの使用方法も非常に簡単です。
#include "dll.h"
#include <iostream>
using namespace std;
int main(void)
{
HelloWorld myworld;
myworld.name = "Tom's world";
cout<<myworld.name<<endl;
return 0;
}