struct Div
{
int i;
int j;
};
class A
{
public:
A();
Div& divs;
};
Run Code Online (Sandbox Code Playgroud)
在我的构造函数定义中,我有以下内容
A::A() : divs(NULL)
{}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error72 error C2354:
'A::divs' : initialization of reference member requires a temporary variable
Run Code Online (Sandbox Code Playgroud) 基本上我想要做的是将对精灵的活动动画的引用存储为Actor类中的私有成员.我想使用引用,所以我不必多次实际创建动画,但我不断收到错误.
演员类声明:
class Actor
{
public:
Actor();
~Actor();
void setActiveAnimation(Animation anim);
void draw(sf::RenderWindow& win);
private:
sf::Sprite sprite;
MaJR::Animation& activeAnimation;
};
Run Code Online (Sandbox Code Playgroud)
Actor类实现:
Actor::Actor()
{
// constructor
}
Actor::~Actor()
{
// destructor
}
void Actor::setActiveAnimation(Animation anim)
{
activeAnimation = anim;
activeAnimation.gotoStart();
}
void Actor::draw(sf::RenderWindow& win)
{
sprite.setTexture(activeAnimation.getActiveFrame());
win.draw(sprite);
activeAnimation.nextFrame();
}
Run Code Online (Sandbox Code Playgroud)
构建输出:
/home/mike/MaJR Game Engine/src/Actor.cpp||In constructor 'MaJR::Actor::Actor()':|
/home/mike/MaJR Game Engine/src/Actor.cpp|8|error: uninitialized reference member 'MaJR::Actor::activeAnimation' [-fpermissive]|
||=== Build finished: 1 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud) 所以我仍然在这里弄清楚C++引用的语义.
我有一个类作为成员的引用,我在构造函数中初始化引用.
template<class T>
class AVLNode {
private:
T & data;
public:
AVLNode(T & newData) {
data = newData;
}
};
Run Code Online (Sandbox Code Playgroud)
但是我在构造函数行上得到了这个错误:
error: uninitialized reference member ‘AVLNode<int>::data’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
我没有得到这个,我在构建类时立即初始化引用,所以引用未初始化的问题应该没有问题吗?
我有一个这样的类.我想使用字符串的引用,但它不起作用.我怎么能使用字符串&?
#include <string>
using namespace std;
class T
{
public:
T(string& s);
private:
string s;
};
T::T(string& s)
{
this->s = s;
}
int main(void)
{
T t("Test Object");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:'T :: T(std :: string&)':无法将参数1从'const char [12]'转换为'std :: string&'