我很难尝试重载*运算符.我试图使用它来取消引用指针.我已经发布了我正在尝试使用的内容.现在,当我尝试使用它时,我收到以下错误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) 我一直试图弄清楚如何将值从回调设置为变量,以便我可以调用变量并访问数据,而不必将所有代码放在回调函数中.我发布了两个有效的示例,第二个有效,返回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) 这是对我正在使用的内容的过度简化,因为有很多代码。所以我有两个班级。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) 我遇到了重载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)