C4430 and C2146 Visual Studio errors

C4430 and C2146 Visual Studio errors

本文关键字:Studio errors Visual C2146 and C4430      更新时间:2023-10-16

我在这里搜索了很多帖子,似乎找不到问题的解决方案。当我试图编译我的程序时,我遇到了两个错误,这两个错误都来自我的一个头文件。以下是错误:

错误1错误C2146:语法错误:缺少";"在标识符"数据存储"之前

错误2错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认的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

〔error C2146:语法错误:标识符‘datastore’之前缺少‘;’〕提示‘datastore‘之前的类未知,这将导致下一个错误。

[error C4430:缺少类型说明符-假定为int。注意:C++不支持默认int]是第一个错误的结果。因为编译器不知道ForexPrices类是什么,所以它试图使用其他东西(我不是默认int的专家)。这是不受支持的,因此您会看到此错误。

由于某些原因,您的ForexPrices类未知。我看到您包含了上面的文件ForexPrices.h。我会确保您的类的名称在头文件中与这里使用的名称完全相同。还要确保它没有在未包含的命名空间中声明。如果是这样,您将需要另一个using语句或引用命名空间中的类(YourNamespace::ForexPrices)。这是一个很好的做法,不要总是相信"歪歪扭扭"我认为。Visual studio有时会出错,至少在解决方案完全解析之前是这样,但在解析需要一些时间的大型项目中,这更是一个问题。