我刚刚开始关注C ++,而且我遇到了一些我无法解决的问题。
我正在尝试做一些简单的事情,比如创建一个带有函数的类,调用该函数并读取返回的值。
但是,我认为这是一个小问题。
我知道这是从主要到Die的调用 - > randomNumber导致此错误,但我不知道为什么。我甚至试图从功能中返回12号而没有任何运气。
我有3个文件(main.cpp,Die.h和Die.cpp)
的main.cpp
#include <string>
#include "Die.h"
using namespace std;
int main() {
Die * test = new Die();
cout << std::to_string(test->randomNumber(4)) << endl;
return 0;
}
Die.h
#pragma once
#include <iostream>
#include <ctime>
#include <cstdlib>
class Die
{
public:
Die();
~Die();
void init();
void rollDie(int&, int&);
void rollDie(int*, int*);
int randomNumber(int);
};
Die.cpp
#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) {
}
答案 0 :(得分:4)
您在randomNumber
和rollDie
声明中遗漏了类说明符。
int Die::randomNumber(int max)
如果没有这些,您只是声明一个名为randomNumber
的全局函数,但链接器正在尝试选择它找不到的Die::randomNumber
。
答案 1 :(得分:2)
在Die.cpp
中,您需要使用类名称为成员函数添加前缀:
int Die::randomNumber(int max) { ... }
void Die::rollDie(int& die1, int& die2) { ... }
void Die::rollDie(int* die1, int* die2) { ... }
没有它,编译器认为你只是定义全局函数。如果你不告诉它,没有理由怀疑他们应该成为一个班级的成员。