c++ - C4430 和 C2146 Visual Studio 错误

标签 c++ file object header composition

我在这里搜索了很多帖子,但似乎无法找到解决我问题的方法。当我尝试编译我的程序时出现两个错误,它们都来 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/

相关文章:

c++ - 模板类型参数未按要求扩展

javascript - 将磁盘空间存储在文件中

c - Fscanf 未使用 execl 通过管道的输出从通过 fdopen 分配的流中读取任何值

javascript - For 循环在对象的方法中不起作用

c# - 制作一个类数组

c++ - `snprintf_s` 错误的安全感

c++ - 在销毁期间使用 std::shared_ptr 的 Segfault 可能是由于堆栈上的函数调用过多

Java 文件无法删除或重命名

javascript - 使用数组属性展平复杂对象的数组

c++ - 您可以使用自定义比较器将 std::map 转换为无序映射吗?