【发布时间】:2018-01-27 22:46:16
【问题描述】:
Visual Studio 一直在为我为课堂制作的“编译器”提供奇怪的构建错误。它告诉我 .cpp 函数“不是其 [标头中的母函数] 的成员”,声明的标头函数的“未知覆盖说明符”,说某些函数不采用 [this] 数量的参数......等等奇怪的是,虽然它指向某些行,但 任何地方 都没有错误标记。没有任何颜色的波浪线。无论用户界面如何,语法似乎都是正确的。所有错误都是构建错误——Intellisense 没有。
我唯一的猜测可能是#include 或继承问题,所以我给出我的代码组织是为了给你一个想法(向你展示代码本身是无用的,因为 UI 没有显示语法错误)。
如果这意味着什么,我已经在 Linux 和 Windows 之间传输了文本文件(我目前正在使用它)。供您参考,我已尝试清除项目缓存,重新构建和重新启动项目,甚至复制到新项目而错误没有变化。这是今年以来VS2017的最新更新。我的猜测是关于包含的内容,但如果不是,VS 似乎是罪魁祸首。但是让我知道可能性。
main.cpp:
//#pragma once
#include "DatalogProgram.h"
#include "Scanner.h"
#include <iostream>
using namespace std;
int main() {
string filepath = "";
Scanner sc;
DatalogProgram parser;
system("pause");
return 0;
}
扫描仪.h:
#pragma once
#include "Token.h"
#include <fstream>
#include <vector>
class Scanner {};
DatalogProgram.h:
#pragma once
#include "Scanner.h"
class DatalogProgram {};
令牌.h:
#pragma once
#include <string>
enum Toktype {};
class Token {};
【问题讨论】:
-
您的 main.cpp 文件中不需要任何
#pragma once... -
取点并编辑。但这并没有改变我的问题......
-
WFM (Visual Studio 2017 15.5.4),必须是您未显示的代码/设置的一部分。
-
我会展示代码,但我不知道它有多大帮助。例如,bool Scanner::scan(string filename) 得到一个错误:“在 Scanner 中找不到重载的成员函数”,即使 bool scan(string filename) 在 Scanner.h 中。我不知道展示什么会有所帮助...括号也可以正确关闭类/函数。
-
这听起来可能是一个循环包含问题(
a.h包括b.h和b.h包括a.h)。
标签: c++ visual-studio visual-studio-2017