关于在头文件中包含语句,我可能有一个非常简单的问题。 我有以下工作:
IPlatformHelper.h:
#pragma once
#include <vector>
class IPlatformHelper
{
public:
virtual int GetNumberOfPlatforms() = 0;
virtual ~IPlatformHelper() {};
};
PlatformHelper.h:
#pragma once
#include "IPlatformHelper.h"
class PlatformHelper :
public IPlatformHelper
{
public:
PlatformHelper();
virtual int GetNumberOfPlatforms();
virtual ~PlatformHelper();
};
PlatformHelper.cpp:
#include "stdafx.h"
#include "PlatformHelper.h"
#include <CL/cl.h>
PlatformHelper::PlatformHelper()
{
}
int PlatformHelper::GetNumberOfPlatforms()
{
cl_uint numPlatforms;
cl_platform_id platforms;
auto result = clGetPlatformIDs(1, &platforms, &numPlatforms);
return (int)numPlatforms;
}
PlatformHelper::~PlatformHelper()
{
}
使用CL / cl.h中公开的方法正确运行。 但是,我想在界面中添加更多有用的方法,包括带有涉及CL / cl.h类的签名的方法:
#pragma once
#include <vector>
#include <CL/cl.h>
class IPlatformHelper
{
public:
virtual std::vector<cl_platform_id> GetPlatform() = 0;
virtual int GetNumberOfPlatforms() = 0;
virtual ~IPlatformHelper() {};
};
所以我将其更新为此,并实现其他文件中的方法。但这给了我错误:
“错误1错误C1083:无法打开包含文件:'CL / cl.h':没有这样的文件或目录”。
所有3个文件都在同一个目录中,当我添加include时,intellisense会建议该文件。 我试过添加一个前向声明而不是include:
class cl_platform_id;
但这会导致错误
“错误1错误C2040:'cl_platform_id':'_ cl_platform_id *'的间接级别与'cl_platform_id'不同”