【问题标题】:C4430 and C2146 Visual Studio errorsC4430 和 C2146 Visual Studio 错误
【发布时间】:2015-04-24 07:06:58
【问题描述】:

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

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

【问题讨论】:

  • ForexPrices.h 是否需要包含您发布的头文件?这些类型的错误是典型的循环依赖。

标签: c++ file object header composition


【解决方案1】:

[错误 C2146:语法错误:缺少 ';' before identifier 'datastore'] 暗示 'datastore' 之前的类是未知的,这会导致您的下一个错误。

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

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

【讨论】:

  • 我没有在命名空间中声明这个类,或者至少我不是故意的。老实说,我什至不确定如何做到这一点。所以这是奇怪的事情。如果我这样做 //ForexPrices 数据存储,编译它,带走 // 真正快速,然后重新编译它编译得很好。我不明白发生了什么哈哈。我还注意到编译器会说“跳过...(未检测到相关更改)如果这有影响的话。
  • ForexPrices.h 是否也包含此文件?正如上面评论中提到的 SleuthEye ,您的问题可能与循环依赖有关。第一个答案here 可能会帮助您了解如何解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多