我想调用'int Random :: random(int lower,int upper)函数,但是我遇到一个问题,'成员函数可能不会在它的类之外重新声明'我也尝试提供一个解决方案以下形式:
'随机m; m.Random()'
表示以下问题'函数调用中的参数太少'
以下是main.cpp文件
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#include "Circle.h"
#include "Random.h"
int main()
{
Random m;
m.random();
// Array 1, below section is to populate the array with random
// radius number within lower and upper range
int CircleArrayOne [5];
const int NUM = 5;
srand(time(NULL));
for(int x = 0; x < NUM; ++x)
{
int Random::random(int lower, int upper);
}
// output the radius of each circle
cout << "Below is the radius each of the five circles in the second array. " << endl;
// below is to output the radius in the array
for(int i = 0; i < NUM; ++i)
{
cout << CircleArrayOne[i] << endl;
}
system("PAUSE");
return 0;
}
int Random::random(int lower, int upper)
{
cout << "Enter lower number: " << lower << endl;
cout << "Enter upper number: " << upper << endl;
int range = upper - lower + 1;
return (rand() % range + lower);
}
以下是Random.h文件
#pragma once
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Random
{
public:
static void initialiseSeed();
// random number initialised
// random number has been initialised to the current time.
static int random(int lower, int upper);
// this function will return a positive random number within a specific lower and
// upper boundary.
};
请帮我解决我出错的地方。 非常感谢所有帮助
答案 0 :(得分:2)
你的原型:
static int random(int lower, int upper);
您的电话:
Random m;
m.random();
您需要提供参数或一些默认值。此外,由于方法为static
,因此您无需调用实例。
Random::random(0,100)
就够了。
即使是评论提示:
// this function will return a positive random number within a specific lower and
// upper boundary.
你既不提供下限也不提供上限。
答案 1 :(得分:2)
这里有两个问题。
首先,你打电话给m.random()
- 不存在这样的功能。你需要给它两个int参数。此外,由于它是static
,您根本不需要Random m
;你可以使用Random::random(some_int, some_other_int);
。
其次,你有这个:
for(int x = 0; x < NUM; ++x)
{
int Random::random(int lower, int upper);
}
这里实际上有两个问题:首先,这不是一个函数调用,它是一个函数声明。函数声明的格式为return_type function_name(arg_type arg_name /* etc. */);
,如此处所示。要调用它,您只需要将实际值传递给它,而不是包含返回值 - 这就是它给你的东西。
其次,您需要将结果存储在某处。您的评论表明这应该是CircleArrayOne
,但您实际上并没有像您声称的那样填充它。
试试这个:
for(int x = 0; x < NUM; ++x)
{
CircleArrayOne[x] = Random::random(0, 10); // assumed 0 and 10 as the bounds since you didn't specify anywhere; you could use variables here also
}
答案 2 :(得分:0)
出现问题的是你有一个错误调用函数的语法,它与声明一个函数的语法不同。如果要调用函数,则给出函数的名称,然后是parens。在parens之间你提出了你需要提供的任何论据。您可能希望使用函数的返回值执行某些操作。现在我并没有真正遵循你想要做的事情,但是这样的事情可能就是你想要的。
int result = Random::random(1, 10);
那么函数Random::random
的名称,后跟参数,在这种情况下为1和10,您可能想要更改这些值。在这种情况下,我从函数调用中获取返回值并将其分配给名为result
的变量。你可能想要改变它。
任何关于C ++的书都会涉及到这一点,可能值得投资。