Linux下的MFC头文件g++;:预期‘;在代币之前 我有一个基于MFC的老C++项目,我想用G+在Linux上的Eclipse(CITOS 6.2)编译。 我从头文件中得到以下错误: RawData.h:54: error: expected template-name before ‘<’ token RawData.h:54: error: expected ‘{’ before ‘<’ token RawData.h:54: error: expected unqualified-id before ‘<’ token RawData.h:54:error:expected template name在“

Linux下的MFC头文件g++;:预期‘;在代币之前 我有一个基于MFC的老C++项目,我想用G+在Linux上的Eclipse(CITOS 6.2)编译。 我从头文件中得到以下错误: RawData.h:54: error: expected template-name before ‘<’ token RawData.h:54: error: expected ‘{’ before ‘<’ token RawData.h:54: error: expected unqualified-id before ‘<’ token RawData.h:54:error:expected template name在“,c++,linux,mfc,porting,C++,Linux,Mfc,Porting,之前,所有MFC内容都是windows专用的,因此它们在Linux上不可用。您必须转换为使用一些跨平台或Linux特定的库,例如STL、wxWidgets等。所有MFC内容都是windows专用的,因此它们在Linux上不可用。您必须转换为使用一些cross平台或特定于linux的库,如STL、wxWidgets等。如果这是您遇到的唯一错误,我建议将CArray替换为STL等效的std::vector。如果广泛使用MFC或windows API,最好尝试根据Winelib编译它 参考: 使用ST

之前,所有MFC内容都是windows专用的,因此它们在Linux上不可用。您必须转换为使用一些跨平台或Linux特定的库,例如STL、wxWidgets等。

所有MFC内容都是windows专用的,因此它们在Linux上不可用。您必须转换为使用一些cross平台或特定于linux的库,如STL、wxWidgets等。

如果这是您遇到的唯一错误,我建议将CArray替换为STL等效的std::vector。如果广泛使用MFC或windows API,最好尝试根据Winelib编译它

参考:

使用STL,您可以这样编写:

#include<vector>

class CRawDayData: public vector<CRawQHData*>
{
public:
    CRawDayData();
    virtual ~CRawDayData();

public:
    tm m_tmDate;

};
#包括
CRawDayData类:公共向量
{
公众:
CRawDayData();
虚拟~CRawDayData();
公众:
tm m_tmDate;
};

如果这是您遇到的唯一错误,我建议用STL等效的std::vector替换CArray。如果广泛使用MFC或windows API,最好尝试根据Winelib编译它

参考:

使用STL,您可以这样编写:

#include<vector>

class CRawDayData: public vector<CRawQHData*>
{
public:
    CRawDayData();
    virtual ~CRawDayData();

public:
    tm m_tmDate;

};
#包括
CRawDayData类:公共向量
{
公众:
CRawDayData();
虚拟~CRawDayData();
公众:
tm m_tmDate;
};

编译器根本不知道什么是
CArray
,因此会出现错误消息。如果是“基于MFC的”项目,正如您自己所说,那么您将需要Linux上的MFC。
CArray
是MFC的一部分。那么,您打算怎么做?将MFC移植到Linux?是的,我正在将Windows程序移植到Linux。我只需要与CArray相当的Linux,以及头文件的正确语法。倾向于STL std::vector。编译器根本不知道如果是“基于MFC的”,则会显示错误消息project,正如您自己所说,那么您将需要Linux上的MFC。
CArray
是MFC的一部分。那么,您打算怎么做?将MFC移植到Linux?是的,我正在将Windows程序移植到Linux。我只需要与CArray相当的Linux,以及头文件的正确语法。倾向于STL std::vector。谢谢您的回答,似乎是这样的me STL将是转换的最佳路径。那么,我如何在STL中做到这一点?在头文件中用std::vector替换CArray的正确语法是什么?请仔细阅读文档。顺便说一句,STL容器不是从中派生出来的,而是用作组件(即成员)在您创建的任何类中,或仅将vector用作独立变量。从标准容器派生的问题是,std::vector或任何标准容器类都没有虚拟析构函数。谢谢,这是一个很大的帮助。但是,我仍然会通过上面的代码更改得到此错误:RawData.h:55:error:expected template name before“检查使用您的类编译的代码。也许这有助于找到缺少的内容。感谢您的回答,在我看来STL将是转换的最佳路径。那么,我将如何在STL中执行此操作?在头文件中用std::vector替换CArray的正确语法是什么?请浏览文档顺便说一句,STL容器不是用来派生的,而是用来作为组件(即成员)在您创建的任何类中,或仅将vector用作独立变量。从标准容器派生的问题是,std::vector或任何标准容器类都没有虚拟析构函数。谢谢,这是一个很大的帮助。但是,我仍然会通过上面的代码更改得到此错误:RawData.h:55:error:expected template name before“检查这里使用类编译的代码。这可能有助于找到缺少的内容。