【问题标题】:Visual Studio 2010 compile error with std::string?Visual Studio 2010 使用 std::string 编译错误?
【发布时间】:2011-06-06 15:46:56
【问题描述】:

所以这可能是我最近看到的最奇怪的事情,我很好奇这是怎么发生的。编译器给了我一个错误,说 std::string 在用作返回类型时未定义,但在用作类方法中的参数时未定义!

#pragma once
#include <string>
#include <vector>

// forward declarations
class CLocalReference;
class CResultSetHandle;

class MyClass
{
public:
MyClass() {}
~MyClass {}

void Retrieve(const CLocalReference& id, CResultSetHandle& rsh, std::string& item); // this is fine
const std::string Retrieve(const CLocalReference& id, CResultSetHandle& rsh); // this fails with std::string is undefined?!?!
};

进行全部重建它仍然发生我必须选择干净的解决方案,然后再次重建全部,以便宇宙重新调整。虽然目前已解决,但我仍然想知道是什么原因造成的,因为我不知道为什么什么时候不应该发生冲突,尤其是当我总是为 STL 使用完全限定名称时。

【问题讨论】:

  • 能否请您粘贴原始错误?
  • 析构函数应该是~MyClass() {} 除此之外,它对我来说编译得很好。我猜这是一个 VS2010 错误,或者错误在您的代码中的其他地方。 (你知道,甚至微软都会制造错误!!)
  • 编译器报什么错误?你能重现这个问题吗?如果它不可重现,那么任何事情都可能发生,而且很可能不是编译器的错。
  • 这不是你的原始代码,你不会有(没有提到)其他错误。
  • 对我来说它在 VS2010 上编译得很好。 (在修复析构函数错字并为其他两个类添加空主体之后。)

标签: c++ visual-studio-2010 stl stdstring


【解决方案1】:

这可能是一个编译器错误。我在 VS2010 中见过其他几个。

【讨论】:

  • 特别是,当您更改某些头文件而不是其他头文件时,依赖性检查器可能会感到困惑。
猜你喜欢
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2011-04-28
相关资源
最近更新 更多