小编MrP*_*lot的帖子

重载*作为解除引用

我很难尝试重载*运算符.我试图使用它来取消引用指针.我已经发布了我正在尝试使用的内容.现在,当我尝试使用它时,我收到以下错误indirection requires pointer operand ('Iterator' invalid)

//用法

Iterator List::Search(int key) {
    Iterator temp(head);

    while (!temp.isNull()) {
        if (*temp == key) {
            //return temp;
            cout << *temp << endl;
        }
        temp++;
    }
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

//头文件

class Iterator {
public:
    Iterator &operator *(const Iterator &) const;
private:
    node* pntr;
};
Run Code Online (Sandbox Code Playgroud)

// CPP文件

Iterator &Iterator::operator *(const Iterator & temp) const {
    return temp.pntr;
}
Run Code Online (Sandbox Code Playgroud)

c++

3
推荐指数
1
解决办法
324
查看次数

将回调数据分配给变量

我一直试图弄清楚如何将值从回调设置为变量,以便我可以调用变量并访问数据,而不必将所有代码放在回调函数中.我发布了两个有效的示例,第二个有效,返回undefined.我怎样才能使第二个例子有效?

这是我获取数据的地方.

var chromeApi = {
    msg: function (callbacks) {
        chrome.runtime.sendMessage({type: "settings"}, callbacks);
    }
};
Run Code Online (Sandbox Code Playgroud)

当我从chromeApi这种方式访问数据时它工作正常.

chromeApi.msg(function (response) {
    console.log(response);
});
Run Code Online (Sandbox Code Playgroud)

但我想以这种方式访问​​它我未定义.如何使我的代码能够使用此方法?

var test = chromeApi.msg(function (response) {
    return response;
});
console.log(test);
Run Code Online (Sandbox Code Playgroud)

javascript

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

从单独的类访问受保护的成员

这是对我正在使用的内容的过度简化,因为有很多代码。所以我有两个班级。A 是 Aa 的父级,X 是 Xx 的父级。我将父 A 设置为 X 和 Xx 的朋友类,以便我可以访问其私有变量和受保护变量。现在因为 Aa 是 A 的孩子并从 A 继承,为什么我不能访问 X 或 Xx 的受保护成员?A 是一个朋友类,所以这不应该工作吗?我总是收到一条错误消息,说它barA是 X 的受保护成员。

class A {
    friend class X;
    friend class Xx;
public:
    void FooA();
protected:
    int fooA;
};

class Aa: public A {
public:
    voif Fooa();
private:
    int fooa;
};

class X {
public:
    void BarA();
protected:
    int barA;
};

class Xx: public X {
public:
    void Bara();
private:
    int bara;
};
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
1634
查看次数

重载post/pre增量运算符

我遇到了重载post/pre ++运算符的问题.所以我有我的主类Nodelist,从这个类我有一个打印功能.print函数使用Iterator该类访问++操作符函数.一切正常,直到达到temp++;无限循环为止; 我正在使用这个链接列表,虽然我知道这nodePntr->next可以让我移动到下一个节点我不知道为什么这不起作用?

节点

struct node {
    int info;
    node* next;
};
Run Code Online (Sandbox Code Playgroud)

节点列表

class NodeList {
public:
    void Print();
private:
    node* header;
};

void Nodelist::Print()
{
    Iterator temp;

    temp = header;
    while (!temp.isNull()) {
        cout << *temp << " ";
        temp++;
    }
}
Run Code Online (Sandbox Code Playgroud)

迭代器

class Iterator {
public:
    friend class Nodelist;
    Iterator();
    Iterator(node *);
    bool isNull();
    node operator++();
    node operator++(int);
private:
    node* nodePntr;
};

node Iterator::operator++()
{
    node *temp = …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
347
查看次数

标签 统计

c++ ×3

javascript ×1