Intellisense 说错误:成员“Class::field”无法访问,但它仍然有效?为啥?
Posted
技术标签:
【中文标题】Intellisense 说错误:成员“Class::field”无法访问,但它仍然有效?为啥?【英文标题】:Intellisense said error: member "Class::field" is inaccessible but it's still works? Why?Intellisense 说错误:成员“Class::field”无法访问,但它仍然有效?为什么? 【发布时间】:2015-02-21 20:11:00 【问题描述】:我在 main.cpp 的单独文件中有一个类,它重载插入运算符。我的课是这样写的:
人.h
#ifndef PERSON_H_INCLUDED
#define PERSON_H_INCLUDED
#include <iostream>
class Person
friend std::ostream& operator<<(std::ostream&, const Person&);
public:
Person(std::string);
protected:
std::string name;
;
#endif
Person.cpp
#include "Person.h"
using namespace std;
Person::Person(string name)
this->name = name;
ostream& operator<<(ostream& out, const Person& person)
out << "Name\t:" << person.name << "\n"; // Here's intellisense said error.
return out;
就在person.name
Intellisense 说错误。我的观点是:
(我使用的是 Visual Studio 2010)
【问题讨论】:
智能感知错误不一定是编译器错误。 Intellisense 是一个单独的编译器,可以部分编译您的代码,以帮助在 Visual Studio IDE 中创建完成。 那么,可以忽略这种错误吗? 是的。可能它完全不知道friend
。
当我尝试使用 sn-ps 时,我确实看到某些东西以一种非常令人讨厌的方式爆炸。确保您的 .cpp 文件包含 #include <string>
【参考方案1】:
您的代码应该可以正常工作!
这是一个错误的错误,尝试一个干净的构建,如果它仍然存在则忽略它并检查 Visual Studio 更新。
【讨论】:
以上是关于Intellisense 说错误:成员“Class::field”无法访问,但它仍然有效?为啥?的主要内容,如果未能解决你的问题,请参考以下文章
mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案
IntelliSense:“没有可用的附加信息”,[请参见“C++项目 IntelliSense 疑难解答”,获得进一步的帮助]
Microsoft Visual Studio 2012 RC C++ IntelliSense 错误
Visual Studio 2013 C++ IntelliSense 显示建议,但不会通过按任何成员列表提交字符来提交它们