Nic*_*ick 10 .net c++ clr visual-studio c++11
我有一个Visual Studio项目,其中包含托管代码和具有非托管代码的文件的文件.该项目具有CLR支持,但是当我添加一个不需要.NET的文件时,只需右键单击该文件即可关闭/ crl选项:

我添加了一个必须包含非托管代码的类,并使用std :: mutex.
// Foo.h
class Foo
{
std::mutex m;
}
Run Code Online (Sandbox Code Playgroud)
编译后我收到以下错误:
错误C1189:使用/ clr或/ clr:pure进行编译时不支持#error :.
问题是我没有关闭头文件(.h)的clr的选项,因为这是我右键单击.h文件时的窗口:

我该如何解决这个问题?
可以使用称为指针实现(pImpl)习惯用法的解决方法.
以下是一个简短的例子:
// Foo.h
#include <memory>
class Foo
{
public:
Foo();
// forward declaration to a nested type
struct Mstr;
std::unique_ptr<Mstr> impl;
};
// Foo.cpp
#include <mutex>
struct Foo::Mstr
{
std::mutex m;
};
Foo::Foo()
: impl(new Mstr())
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7171 次 |
| 最近记录: |