【发布时间】:2021-06-11 19:30:00
【问题描述】:
以下简单应用程序演示了编译错误:
我的班级声明:MyClass.h
#pragma once
class MyClass
{
friend int MyCalc();
public:
};
类定义:MyClass.cpp
#include "stdafx.h"
#include "MyClass.h"
int MyCalc()
{
return 1 + 2;
}
主要功能:ConsoleApplication1.cpp
#include "stdafx.h"
#include "MyClass.h"
#include <iostream>
int main()
{
std::cout << MyCalc();//"Identifier MyCalc is undefined" in Visual Studio 2019, but not in 2015
return 0;
}
我猜更新后的 c++ 版本让这变得更加严格。 那么我是否必须在类之外添加一个函数声明,只要我声明了一个朋友函数,就像这样:
class MyClass
{
friend int MyCalc();
public:
};
int MyCalc();
【问题讨论】:
-
C++ 已经有很长一段时间了。
-
Visual Studio 的 C++ 编译器存在错误,已在 2019 年修复。
-
尝试关闭预编译头文件。小型程序不需要它们。
-
当前 C/C++ 设置 = "不使用预编译头文件"
标签: c++ visual-studio-2015 visual-studio-2019 friend