我在这里搜索了很多帖子,但似乎无法找到解决我问题的方法。当我尝试编译我的程序时出现两个错误,它们都来 self 的一个头文件。以下是错误:
错误 1 错误 C2146:语法错误:缺少“;”在标识符“数据存储”之前
和
错误 2 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
在我的 cpp 文件中,我有范围解析运算符,并且在任何内容下都没有任何波浪形的红线。该程序还编译了一次,然后我将其保存并重新打开该程序,它给了我这些错误。所以我认为我最初“欺骗”了编译器或一些奇怪的东西。所以任何帮助都会很棒!
#ifndef INTERNET_H
#define INTERNET_H
#include <windows.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <sstream>
#include "Wininet.h"
#include "Internet.h"
#include "ForexPrices.h"
using namespace std;
class Internet
{
private:
ForexPrices datastore;
BOOL bResult;
char *chPtr0,
*chPtr1,
*chPtr2;
DWORD dw1,
dw2,
dwIndex;
HINTERNET hInet, hRequest;
HINTERNET h_Inet;
char ch_Buffer[4096],
ch_Line[256];
std::ofstream of_OutFile;
public:
Internet();
void openFile();
void internetCheckConnection();
HINTERNET internetopen();
HINTERNET internetconnect();
void internetclose();
void closeFile();
char* grabMargin();
double grabDailyAverageLine();
void setcurrency(char *currencyfiller1);
};
#endif
最佳答案
[错误 C2146:语法错误:缺少“;”在标识符 'datastore' 之前] 提示 'datastore' 之前的类是未知的,这会导致您的下一个错误。
[错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int] 是第一个错误的结果。因为编译器不知道您的 ForexPrices 类是什么,所以它正在尝试使用其他东西(我不是 default-int 方面的专家)。这不受支持,因此您会看到此错误。
由于某种原因,您的 ForexPrices 类未知。我看到您包含了上面的文件 ForexPrices.h。我会确保您的类名在您的头文件中与此处使用的名称完全相同。还要确保它没有在您未包含的命名空间中声明。如果是这样,您将需要另一个 using 语句或引用命名空间中的类 (YourNamespace::ForexPrices)。最好不要总是相信我认为的“波浪形”。至少在您的解决方案被完全解析之前,Visual Studio 有时会出错,但这在解析需要一些时间的超大型项目中更成问题。
关于c++ - C4430 和 C2146 Visual Studio 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665649/