【问题标题】:C++ A nonstatic member reference must be relative to a specific objectC++ 非静态成员引用必须相对于特定对象
【发布时间】:2015-06-01 15:25:15
【问题描述】:
Vector2D tankPos = Tank_b017191c::GetTankPosition();

我试图从不同的类调用一个函数,但我收到了这个错误:

47 IntelliSense:非静态成员引用必须相对于 具体的 对象 e:\Repos\GameAI\GameAI\PathFinder_b017191c.cpp 113 21 GameAI

我已将 Tank_b017191c.h 包含在我的头文件中,但还没有走多远..

【问题讨论】:

  • 你需要一个对象来调用一个非静态成员函数。 Object a; a.foo();
  • 你需要一个该类的实例,而不仅仅是它的类型

标签: c++ non-static


【解决方案1】:

似乎成员函数GetTankPosition 是一个非静态成员函数。您必须使用类的实例来调用它,例如

Tank_b017191c tank;
Vector2D tankPos  = tank.GetTankPosition();

Tank_b017191c tank( /* some arguments */ );
Vector2D tankPos  = tank.GetTankPosition();

【讨论】:

  • 我试过这个,但后来我得到'错误:类“Tank_b017191c”没有默认构造函数
  • 您要求的是 tank 的位置。哪一个?您是否创建了一个tank 来担任该职位?如果是这样,那就是您使用的变量。
  • @BR3TON 这只是一个例子。您必须调用类中定义的构造函数(带参数)。
【解决方案2】:

你需要有这样的东西:

Tank_b017191c tank; // you first need to create an object of this class
Vector2D tankPos = tank.GetTankPosition();

【讨论】:

  • 我试过这个,但后来我得到'错误:类“Tank_b017191c”没有默认构造函数
  • 这意味着您的 Tank_b017191c 类没有默认构造函数,并且您已经定义了自己的构造函数。因此,您现在必须使用用于初始化该类的对象的任何构造函数来初始化该对象。
猜你喜欢
  • 2018-03-26
  • 2016-08-13
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 2018-10-23
相关资源
最近更新 更多