无效使用的成员函数,你忘记了()
C++ Invalid use of member function, did you forget the ( )?
我正在使用模板创建自己的容器。我需要使用的容器称为Smaph,它接受两对数字并使用它们执行各种功能。我只被允许为这个作业制作一个头文件。我创建了一个单链接类slink,它接受一个模板参数。
目前,我正试图得到一个感觉模板和学习如何使用它们,所以我有一个非常简单的例子,我希望你能帮助我。我有一个push_back函数在我的单链表类添加到我的模板。由于某种原因,我不能向我的slink添加东西,因为我得到一个编译时错误,说:无效使用成员函数,(push_back),你忘记了()吗?有人能告诉我为什么我得到这个错误吗?谢谢你!
template <typename T>
class slink {
private:
struct node {
T datum;
struct node *next;
};
node *head, *tail;
public:
slink() : head(0), tail(0) {
}
~slink() {
clear();
}
void push_back(const T &datum) {
node *p = new node;
p->datum = datum;
p->next = 0;
if (!tail)
head = p;
else
tail->next = p;
tail = p;
}
template <typename Tfirst, typename Tsecond>
class Smaph {
public:
Smaph();
~Smaph();
Smaph(const Tfirst a, const Tsecond b) {
std::pair<Tfirst, Tsecond> pair1(a, b);
s.push_back(pair1);
}
private:
slink<std::pair<Tfirst, Tsecond> > s();
};
最后,我的主测试我的程序。我现在要做的就是通过我的Smaph把这两个数字加到我的单链表中。
int main() {
Smaph<int, double> s(3, 6.3);
}
slink<std::pair<Tfirst, Tsecond> > s();
这是一个名为s
的函数的声明,该函数不接受参数并返回slink<std::pair<Tfirst, Tsecond> >
。当编译器看到你做s.push_back(pair1);
时,它想知道你想对那个糟糕的函数做什么。删除()
使其成为数据成员:
slink<std::pair<Tfirst, Tsecond> > s;
在这一行您做了:
slink<std::pair<Tfirst, Tsecond> > s();
声明一个名为s
的函数,返回slink<std::pair<Tfirst, Tsecond> >
。但是你在你的一个成员函数中做了这个:
s.push_back(pair1);
这是不对的,这就是为什么你的编译器会提醒你无效地使用这个成员函数。
要修复,请删除参数:
slink<std::pair<Tfirst, Tsecond> > s;
相关文章:
- 仅在函数模板中为那些定义了函数的类型执行函数
- 指针地址的内存偶尔更改了函数前和后返回
- WinAPI 混淆了函数参数
- 注意:'std::thread'在标题""中定义<thread>;您是否忘记了"#include<thread>"?
- MySQL 用户在 C++ 中定义了函数
- Flex和Bison忽略了函数体
- 为什么 Stroustrup 在 "The C++ Programming Language 3rd Edition (online)" 中定义了函数 sqrt?
- 我是否正确使用了函数指针
- C++:尝试将 fstream 作为参数传递时删除了函数?
- 删除了函数unique_ptr
- 在代码中使用 strcmp,编译>测试>失败,调试,意识到我忘记了 0==strcmp
- 编译器给出"function not declared in this scope"但声明了函数 (C++)
- CMake在更改CMakeLists.txt后忘记了pthreads
- 如何确定在哪个.SO库中给定了C函数
- 如何将此C++代码转换为 C# 代码?我忘记了什么语法
- 基类类型的指针忘记了原始对象类型
- 不小心我忘记从函数返回值,但是当我在函数声明中返回引用时,它起作用了.为什么
- 如何检查 chaiscript 中是否定义了函数以及如何使用类型化参数执行它
- 正在使用已在另一个已使用的库中定义了函数名的库
- 无效使用的成员函数,你忘记了()