在条件下加载头文件并具有头文件中的类的类对象

时间:2016-10-27 22:07:48

标签: c++ visual-studio

我必须限制(使用整个类)头文件加载到64位窗口。为此,我包括预处理器(ifdef)。但是代码中使用了类引用。如何处理该参考?

Gun.h

#pragma once

class Gun
 {
private:
   int stuff;
public:
 void doStuff();
};

Gun.cpp

#include "Gun.hpp"
#include <iostream>
using std::cout;
using std::endl;

void Gun::doStuff()
{
cout << stuff << endl;
}

的main.cpp

#if defined(_WIN64)
#include "Gun.h"
#endIf
int main()
{
Gun *mygun ; // getting Compilation error here
mygun->doStuff();


return 0;
}

2 个答案:

答案 0 :(得分:0)

只需应用相同的限制来混合调用代码:

#if defined(_WIN64)
#include "Gun.h"
#endIf
int main()
{
#if defined(_WIN64) // <<<<<<<<<<<<<<<<<<<
Gun *mygun ; // getting Compilation error here
mygun->doStuff();
#endIf


return 0;
}

答案 1 :(得分:0)

如果你的main()函数使用类Gun,你必须给它一个Gun类。通常人们会提供两个版本的Gun.h(比如Gun32.h和Gun64.h),并使用#ifdef ...#else ...#endif选择性加载其中一个版本。