相关疑难解决方法(0)

引用成员的初始化需要临时变量C++

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)

c++ struct reference

13
推荐指数
4
解决办法
4万
查看次数

未初始化的参考成员

基本上我想要做的是将对精灵的活动动画的引用存储为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++

13
推荐指数
2
解决办法
5万
查看次数

在类构造函数中初始化引用变量

所以我仍然在这里弄清楚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)

我没有得到这个,我在构建类时立即初始化引用,所以引用未初始化的问题应该没有问题吗?

c++ reference

6
推荐指数
1
解决办法
1万
查看次数

使用字符串引用

我有一个这样的类.我想使用字符串的引用,但它不起作用.我怎么能使用字符串&?

#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&'

c++ reference

4
推荐指数
1
解决办法
1885
查看次数

标签 统计

c++ ×4

reference ×3

struct ×1