列为班级成员
Posted
技术标签:
【中文标题】列为班级成员【英文标题】:list as member in a class 【发布时间】:2012-10-13 21:05:42 【问题描述】:我遇到了一些麻烦!我的目标是通过find()
函数对照素数列表检查输入数字,以查看它是否为素数(在列表中)。我还没有走到那一步。这是作业,所以我必须重载函数运算符并以这种愚蠢(恕我直言)的方式来做。到目前为止,这是我所拥有的:
using namespace std;
class isprime
public: isprime() /*nothing...yet?*/
bool operator()(int);
list <int> pnums(1, 2);
private: int expandList(int number);
;
bool isprime::operator()(int number)
if (pnums.back() < number)
int isprime::expandList(int number)
for (int j = pnums.back(); j = number; j++)
for (int i = 2; i < sqrt(j); i++)
if (j % i != 0) pnums.push_back(j);
int main()
isprime pcheck;
int number;
while (cin >> number)
if (pcheck(number)) cout << number << " is prime!\n";
这是我的错误:
prime2.cpp:12:错误:数字常量之前的预期标识符 prime2.cpp:12:错误:数字前应有“,”或“...” 常量 prime2.cpp:在成员函数 'bool isprime::operator()(int)': prime2.cpp:19: 错误: '((isprime*)this)->isprime::pnums' 没有类类型 prime2.cpp:在成员函数“int isprime::expandList(int)”中: prime2.cpp:23: 错误: '((isprime*)this)->isprime::pnums' 没有 类类型 prime2.cpp:25: 错误: '((isprime*)this)->isprime::pnums' 没有类类型
我不明白出了什么问题。谁能帮帮我?
【问题讨论】:
修改类定义的工作方式,特别是如何声明类成员。 一次出现 1 个错误,并尝试自己解决。它比我们进来并为您提供更正的版本有用得多。 google提示:构造函数初始化列表 还有一个:list.back
是一种方法,因此:list.back()
还有一个问题,为什么你会认为它“愚蠢”:我喜欢函数对象!显然,这是一个学习练习,通常很“奇怪”,但无论如何!
【参考方案1】:
最大的问题是你如何尝试在你的类中使用列表的构造函数。如果您只是从类中的列表声明中删除(1, 2)
,它应该可以编译。其次,如果你想在你的类中调用一个对象的构造函数,我推荐这个方法
class isprime
public:
isprime() : pnums(1,2) /*nothing...yet?*/
...
list <int> pnums;
...
【讨论】:
Niiiiice!!当您发布它时,我已经弄清楚了,但是谢谢,因为我的讲师为我们提供了一个 makefile 来编译我们的代码,并且我不断收到所有这些疯狂的错误,但是这是由于我的编译器对我的代码感到满意并且对目录中的不同代码不太满意。长话短说,这个回应让我有信心知道我的方法是正确的以上是关于列为班级成员的主要内容,如果未能解决你的问题,请参考以下文章