C4430和C2146 Visual Studio错误

时间:2015-02-23 01:22:21

标签: c++ file object header composition

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

错误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

1 个答案:

答案 0 :(得分:1)

[错误C2146:语法错误:缺少';'在标识符'datastore'之前提示“数据存储区”之前的类是未知的,这会导致您的下一个错误。

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

由于某种原因,您的ForexPrices类未知。我看到你包含了上面的文件,ForexPrices.h。我会确保您的类的名称在头文件中与此处使用的名称完全相同。还要确保它未在未包含的名称空间中声明。如果是这样,您将需要另一个using语句或引用命名空间中的类(YourNamespace :: ForexPrices)。这是一个好习惯,不要总是相信我认为的“波浪形”。 Visual Studio有时候至少会在你的解决方案被完全解析之前搞砸,但对于解析需要一些时间的大型项目来说,这更是一个问题。