从对象函数调用返回int(基本) 我刚开始看C++,我遇到了一些问题,我无法左右。< /P>
我正在尝试做一些简单的事情,比如创建一个带有函数的类,调用该函数并读取返回值 然而,我被困在我认为是一个小问题 我知道是main对Die->randomNumber的呼叫导致了这个错误,但我不知道为什么。我甚至试图在没有任何运气的情况下从函数返回数字12 错误: 我有3个文件(main.cpp、Die.h和Die.cpp) main.cpp从对象函数调用返回int(基本) 我刚开始看C++,我遇到了一些问题,我无法左右。< /P>,c++,C++,我正在尝试做一些简单的事情,比如创建一个带有函数的类,调用该函数并读取返回值 然而,我被困在我认为是一个小问题 我知道是main对Die->randomNumber的呼叫导致了这个错误,但我不知道为什么。我甚至试图在没有任何运气的情况下从函数返回数字12 错误: 我有3个文件(main.cpp、Die.h和Die.cpp) main.cpp #include <string> #include "Die.h" using namespace std; int main() {
#include <string>
#include "Die.h"
using namespace std;
int main() {
Die * test = new Die();
cout << std::to_string(test->randomNumber(4)) << endl;
return 0;
}
#include "Die.h"
Die::Die()
{
}
Die::~Die()
{
}
void Die::init() {
}
int randomNumber(int max) {
srand(static_cast<unsigned int>(time(0)));
return (rand() % max + 1);
}
void rollDie(int& die1, int& die2) {
}
void rollDie(int* die1, int* die2) {
}
#包括
#包括“Die.h”
使用名称空间std;
int main(){
模具*测试=新模具();
cout randomNumber(4))您在声明randomNumber
和rollDie
时缺少类说明符
int-Die::随机数(int-max)
如果没有这些函数,您只是声明了一个名为randomNumber
的全局函数,但是链接器正在尝试选择它找不到的Die::randomNumber
。在randomNumber
和rollDie
的声明中缺少类说明符
int-Die::随机数(int-max)
如果没有这些函数,您只是声明一个名为randomNumber
的全局函数,但是链接器正在尝试选择它找不到的Die::randomNumber
。在Die.cpp
中,您需要使用类名作为成员函数的前缀:
int Die::randomNumber(int max) { ... }
void Die::rollDie(int& die1, int& die2) { ... }
void Die::rollDie(int* die1, int* die2) { ... }
否则,编译器会认为您只是在定义全局函数。如果您不告诉它,就没有理由怀疑它们应该是类的成员。在Die.cpp
中,您需要在成员函数前面加上类名:
int Die::randomNumber(int max) { ... }
void Die::rollDie(int& die1, int& die2) { ... }
void Die::rollDie(int* die1, int* die2) { ... }
否则,编译器会认为您只是在定义全局函数。如果您不告诉它,就没有理由怀疑它们应该是类的成员。作为旁白:不要在randomNumber
中调用srand()
——在main()中调用一次
。如前所述,您在一秒钟内每次掷骰子时都会得到相同的随机数,因为您正在为每次调用重新播种RNG。注意,感谢将srand移至main:)副本的相关答案:。这是一个大标题的部分,其中指出一个常见错误是忘记限定名称。我在询问之前进行了搜索对于这个问题,我很少在这里问任何问题。但是我找不到解决问题的方法。但是,是的,我可以在问之前做更多的搜索。作为旁白:不要在randomNumber
中调用srand()
——在main()中调用一次
。如前所述,您在一秒钟内每次掷骰子时都会得到相同的随机数,因为您正在为每次调用重新播种RNG。注意,感谢将srand移至main:)副本的相关答案:。这是一个大标题的部分,其中指出一个常见错误是忘记限定名称。我在询问之前进行了搜索对于这个问题,我很少在这里问任何问题。但是我找不到解决问题的方法。但是是的,我可以在问之前做更多的搜索。