【问题标题】:New Compiler - Using Cout?新编译器 - 使用 Cout?
【发布时间】:2013-05-27 21:17:40
【问题描述】:

我已经寻找解决我的问题的方法,但发布的那些似乎不起作用。我正在尝试在 Visual Studio 2012 中运行以下内容。我以前使用 Eclipse 进行编程,现在正在适应新的 IDE。

    class
    IntSLLNode{
    public:
    int info;
    IntSLLNode *next;

    IntSLLNode(){
    next = 0;
    }

  IntSLLNode (int el, IntSLLNode *ptr= 0) {
  info = el;
  next = ptr;
  }

};

int main(){

#include <iostream>

using namespace std;

IntSLLNode *p = new IntSLLNode(18);
cout << *p;

return;

}

当我尝试运行它时,它在 cout 下给了我一个错误。我像往常一样包含了 iostream 和 std 命名空间。这不正确吗?任何人都可以帮助我让它工作,因为我非常喜欢 Visual Studio IDE 的外观并希望继续使用它。

【问题讨论】:

  • 如果你编辑你的问题添加你从你的IDE得到的错误信息会更好
  • 另请注意,“using namespace std”比std:: 包含更多字符,因此在这种情况下,它甚至不会为您节省任何输入。
  • 很确定这也不会在 Eclipse 中编译。

标签: c++ iostream


【解决方案1】:

这里的问题是线条

#include <iostream>
using namespace std;

不应在main 内。相反,它们应该位于程序的顶层。你的程序应该看起来更像

#include <iostream>
using namespace std;

/* Other definitions */

int main() {
    IntSLLNode *p = new IntSLLNode(18);
    cout << *p;
}

另外,你有声明

return;

在返回 int 的函数内部,这是不允许的。尝试将其更改为任一

return 0;

或者,因为这是main,所以一起跳过return

希望这会有所帮助!

【讨论】:

  • 另外,IntSLLNode 对象没有重载的operator&lt;&lt;,所以cout &lt;&lt; *p; 仍然是一个错误。也许cout &lt;&lt; p;
  • 谢谢!不归还;相当于返回 0;,但是呢?我想输出指针 p 的值,所以我取消了它的引用。不是吗?
  • @user2395694 return; 不等同于return 0;
  • 去掉 imo 的指针周期。而using 部分至少可以进入main
  • @user2395694 取消引用指针意味着获取它指向的东西。因此,如果指针的值是指它指向的地址,则只需按原样使用指针。当您使用流插入运算符 (&lt;&lt;) 传递指针时,std::ostream(这是 std::cout 的类型)打印出指针的地址。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2016-06-30
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
相关资源
最近更新 更多