相同的代码,不同的结果?从其他项目包含有什么问题?

Same code, different results? What's wrong with including from other project?

本文关键字:项目 包含 问题 什么 其他 代码 结果      更新时间:2023-10-16

大家好。

我对Visual Studio(2017 Community(或编译器有问题。我在我的主要项目中使用了一个名为 utputStream.h 的文件,它可以正常工作,没有编译错误。

但是,如果我想在其他项目中使用它:

#include" .. Engine2 utputStream.h"

我有以下错误:

c4596'<<':成员声明中的非法合格名称 -> y: dx-engine Engine2 utiveStream.h

它在主项目中编译似乎令人误解,因此我认为错误不是由语法引起的。无论如何,这是代码:

#pragma once
#include <sstream>
#include <Windows.h>
struct SpecialCode { int code; };
extern SpecialCode msgbox ;
extern SpecialCode console;
class OutputStream {
protected:
    std::stringstream stream = std::stringstream("", std::ios_base::app | std::ios_base::out);
public:
    OutputStream();
    OutputStream & OutputStream::operator<<(int data);
    OutputStream & OutputStream::operator<<(double data);
    OutputStream & OutputStream::operator<<(SpecialCode finish);
    OutputStream & OutputStream::operator<<(char * data);
    OutputStream & OutputStream::operator<<(const char * data);
};

该错误以&lt;&lt; 出现在第一行中

如果我用&lt;&lt; 删除所有行,则它会编译。

感谢您的任何帮助。

无论如何,它可以与项目设置有关吗?就像当您在Visual Basic中设置"严格"时?

我的错误是:

OutputStream & OutputStream::operator<<(int data);

应该是

OutputStream & operator<<(int data);

我只是认为这不是原因,因为它以前有效。

我学到了一门教训。不要编写代码,只是有效的,您也不完全确定它是如何工作的:(

一个有相同问题的人可能需要研究:

http://en.cppreference.com/w/cpp/language/operators