我在这里搜索过很多帖子,似乎无法找到解决问题的方法。我尝试编译程序时遇到两个错误,它们都来自我的一个头文件。以下是错误:
错误1错误C2146:语法错误:缺少&#39 ;;'在标识符'数据存储区'之前
和
错误2错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int
在我的cpp文件中,我有范围分辨率操作符,并且我没有任何东西下面有任何波浪形的红线。该程序编译ONCE,然后我保存并重新打开程序,它给了我这些错误。所以我认为我最初被欺骗了#34;编译器或奇怪的东西。所以任何帮助都会很棒!
#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
答案 0 :(得分:1)
[错误C2146:语法错误:缺少';'在标识符'datastore'之前提示“数据存储区”之前的类是未知的,这会导致您的下一个错误。
[错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int]是第一个错误的结果。因为编译器不知道你的ForexPrices类是什么,所以它试图使用其他东西(我不是default-int的专家)。这不受支持,因此您会看到此错误。
由于某种原因,您的ForexPrices类未知。我看到你包含了上面的文件,ForexPrices.h。我会确保您的类的名称在头文件中与此处使用的名称完全相同。还要确保它未在未包含的名称空间中声明。如果是这样,您将需要另一个using语句或引用命名空间中的类(YourNamespace :: ForexPrices)。这是一个好习惯,不要总是相信我认为的“波浪形”。 Visual Studio有时候至少会在你的解决方案被完全解析之前搞砸,但对于解析需要一些时间的大型项目来说,这更是一个问题。