从对象函数调用返回int(基本)

时间:2017-01-23 20:28:07

标签: c++

我刚刚开始关注C ++,而且我遇到了一些我无法解决的问题。

我正在尝试做一些简单的事情,比如创建一个带有函数的类,调用该函数并读取返回的值。

但是,我认为这是一个小问题。

我知道这是从主要到Die的调用 - > randomNumber导致此错误,但我不知道为什么。我甚至试图从功能中返回12号而没有任何运气。

错误: error

我有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) {

}

2 个答案:

答案 0 :(得分:4)

您在randomNumberrollDie声明中遗漏了类说明符。

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) { ... }

没有它,编译器认为你只是定义全局函数。如果你不告诉它,没有理由怀疑他们应该成为一个班级的成员。

相关问题