创建c++;c文件中的对象 我有一个查询,在C文件中创建C++对象。< /P>

创建c++;c文件中的对象 我有一个查询,在C文件中创建C++对象。< /P>,c++,c,xcode,C++,C,Xcode,我有下面的示例代码。当尝试导入cpluheader时,它抛出了一个我无法理解的错误 找不到iostream文件作为错误之一。我怎样才能解决这个问题 问候,, 列宁 CPlusFile.h include iostream include string using namespace std; class CPlusFile { int data; public: CPlusFile(); int getData(); }; CPlusFile.cpp CPlusFIle::

我有下面的示例代码。当尝试导入cpluheader时,它抛出了一个我无法理解的错误

找不到iostream文件作为错误之一。我怎样才能解决这个问题

问候,, 列宁

CPlusFile.h

include iostream

include string

using namespace std;

class  CPlusFile {
  int data;
public:
  CPlusFile();
  int getData();
};
CPlusFile.cpp

CPlusFIle::CPlusFIle() {
  data = 10;
}

int CPlusFile::getData() {
  return data;
}
文件h

int doSomething();
c文件

include "CFile.h"

include "CPlusFile.h"

int doSomething() {
  CPlusFile object; 

}

<代码> IoSturis/Cuth>是C++头,如果使用C编译器编译,则不可用。你可以在C++代码> C < /C>文件中编写C++代码,只需要使用正确的编译器。

<代码> IOSWATE./CODE >是C++头,如果使用C编译器编译,则不可用。你可以在C++代码> C < /C>文件中编写C++代码,只需要使用正确的编译器。 这在很大程度上取决于您所称的“C文件”。前面的答案假设您指的是带有.c后缀的文件。这里我假设你指的是一个用C编译器编译的文件


如果我的假设是正确的,那么答案很简单:不能在C文件中实例化C++类。但是,你可以做的是从C代码中调用C++静态方法。例如,请参阅以了解如何执行此操作。

这在很大程度上取决于您所称的“C文件”。前面的答案假设您指的是带有.c后缀的文件。这里我假设你指的是一个用C编译器编译的文件


如果我的假设是正确的,那么答案很简单:不能在C文件中实例化C++类。但是,你可以做的是从C代码中调用C++静态方法。例如,请参阅如何使用此文件。

< P>您可以在C++头文件中使用此方法来检查是否将从C或C++代码中包含:

#ifdef __cplusplus

包含“代码> IOSROUND”,以及使用<代码>类< /C> >,仅适用于C++代码。


但是如果你想使用C++代码> C++文件类,你只能用C++代码来实现。最好是把你的<代码> CFile .c<代码> > <代码> cFP.CPP ./P> > P>你可以在C++头文件中使用它来检查你将从C或C++代码中包含:

#ifdef __cplusplus

包含“代码> IOSROUND”,以及使用<代码>类< /C> >,仅适用于C++代码。

但是如果你想使用C++代码> C++文件类,你只能用C++代码来实现。最好是将您的

CFile.c
重命名为
CFile.cpp

首先,它是

#include <iostream>
#include <string>
其次,如果将CFile.c编译为c,那么这将不起作用。C编译器将无法理解class关键字,您无法在C中创建类的实例。

首先,它是

#include <iostream>
#include <string>

其次,如果将CFile.c编译为c,那么这将不起作用。C编译器不理解类关键字,不能在C.< /P> < P>中创建类的实例,是的,C文件内可以调用C++对象。在这里,我执行了一个场景,
这对我来说很好

 CPlusFile.h 

  #include<iostream>
  #include<string>
     using namespace std;
       class cplus{

                int data;
                public:
                       cplus();
                        int getdata();

       };

   CPlusFile.cpp

      #include "cplusfile.h"
       cplus::cplus(){  data =10; }
       int cplus::getdata(){ return data; }


   CFile.h

     #include "cplusfile.h"
     #include<stdio.h>
           int dosomething();

 CFile.c

       #include "cfile.h"
        int dosomething(){

                cplus c;
                  printf("%d",c.getdata());


           }

     int main() {
                dosomething(); 
                return 0;
          }



     And compile this by g++ CFile.c CPlusFile.cpp and it works fine.
CPlusFile.h
#包括
#包括
使用名称空间std;
类cplus{
int数据;
公众:
cplus();
int getdata();
};
CPlusFile.cpp
#包括“cplusfile.h”
cplus::cplus(){data=10;}
int cplus::getdata(){return data;}
文件h
#包括“cplusfile.h”
#包括
int dosomething();
c文件
#包括“cfile.h”
int dosomething(){
cplus-c;
printf(“%d”,c.getdata());
}
int main(){
dosomething();
返回0;
}
并使用g++CFile.CPlusFile.cpp编译此文件,效果良好。

> p>是的,可以在C文件中调用C++对象。在这里,我执行了一个场景,
这对我来说很好

 CPlusFile.h 

  #include<iostream>
  #include<string>
     using namespace std;
       class cplus{

                int data;
                public:
                       cplus();
                        int getdata();

       };

   CPlusFile.cpp

      #include "cplusfile.h"
       cplus::cplus(){  data =10; }
       int cplus::getdata(){ return data; }


   CFile.h

     #include "cplusfile.h"
     #include<stdio.h>
           int dosomething();

 CFile.c

       #include "cfile.h"
        int dosomething(){

                cplus c;
                  printf("%d",c.getdata());


           }

     int main() {
                dosomething(); 
                return 0;
          }



     And compile this by g++ CFile.c CPlusFile.cpp and it works fine.
CPlusFile.h
#包括
#包括
使用名称空间std;
类cplus{
int数据;
公众:
cplus();
int getdata();
};
CPlusFile.cpp
#包括“cplusfile.h”
cplus::cplus(){data=10;}
int cplus::getdata(){return data;}
文件h
#包括“cplusfile.h”
#包括
int dosomething();
c文件
#包括“cfile.h”
int dosomething(){
cplus-c;
printf(“%d”,c.getdata());
}
int main(){
dosomething();
返回0;
}
并使用g++CFile.CPlusFile.cpp编译此文件,效果良好。

顺便说一下,您的代码无法编译<代码>包含<代码> >代码> >包含< /代码>,有时使用<代码> C++文件> <代码> >代替C++ > CPLUS文件< /代码>等。我可以使用C“外部”C“C”API来包含C头,一个更好的来源:(如何混合C和C++)。好的,现在我可以包括C++头。但我的困惑是如何在C文件中创建C++对象。如果不可能,那么请让我知道替代方法。当我做这样的事情时,它给出了编译错误。CPlusFIle对象;请说明“c文件”的含义。然后,我们可能会详细阐述一个满足您期望的场景。我可能会重复自己:你不能用C编译器编译C++类。代码>包含<代码> >代码> >包含< /代码>,有时使用<代码> C++文件> <代码> >代替C++ > CPLUS文件< /代码>等。我可以使用C“外部”C“C”API来包含C头,一个更好的来源:(如何混合C和C++)。好的,现在我可以包括C++头。但我的困惑是如何在C文件中创建C++对象。如果不可能,那么请让我知道替代方法。它在运行时给出编译错误