【发布时间】:2016-01-18 11:56:57
【问题描述】:
我正在尝试模拟某个游戏作为练习(不要问我哪个,您会知道您是否知道游戏),但是,我只是在互联网上学习了对象和类,整个事情仍然如此混乱我。以下是我的代码的一部分,它给了我一个错误。
我的错误是:
C:\Users\N\Desktop\Untitled1.cpp In constructor 'ekop::Moveset::Moveset()':
56 9 C:\Users\N\Desktop\Untitled1.cpp [Error] no matching function for call to 'Move::Move()'
56 9 C:\Users\N\Desktop\Untitled1.cpp [Note] candidates are:
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(std::string, int, int, int)
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 4 arguments, 0 provided
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(const Move&)
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 1 argument, 0 provided
56 9 C:\Users\N\Desktop\Untitled1.cpp [Error] no matching function for call to 'Move::Move()'
56 9 C:\Users\N\Desktop\Untitled1.cpp [Note] candidates are:
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(std::string, int, int, int)
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 4 arguments, 0 provided
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(const Move&)
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 1 argument, 0 provided
56 9 C:\Users\N\Desktop\Untitled1.cpp [Error] no matching function for call to 'Move::Move()'
56 9 C:\Users\N\Desktop\Untitled1.cpp [Note] candidates are:
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(std::string, int, int, int)
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 4 arguments, 0 provided
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(const Move&)
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 1 argument, 0 provided
56 9 C:\Users\N\Desktop\Untitled1.cpp [Error] no matching function for call to 'Move::Move()'
56 9 C:\Users\N\Desktop\Untitled1.cpp [Note] candidates are:
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(std::string, int, int, int)
14 3 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 4 arguments, 0 provided
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] Move::Move(const Move&)
11 7 C:\Users\N\Desktop\Untitled1.cpp [Note] candidate expects 1 argument, 0 provided
C:\Users\N\Desktop\Untitled1.cpp In constructor 'ekop::ekop()':
52 12 C:\Users\N\Desktop\Untitled1.cpp [Note] synthesized method 'ekop::Moveset::Moveset()' first required here
我不知道出了什么问题,代码如下。
不要告诉我不要使用using namespace std;,我知道我不应该这样做,但我不会在这个程序中解决这个问题。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <string>
#include <stdio.h> /* printf, scanf, puts, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
using namespace std;
class Move
{
public:
Move(string a, int b, int c, int d)
{
name = a;
type_num = b;
power = c;
accuracy = d;
}
void setName (string a)
{
name = a;
}
void setType_num(int a)
{
type_num = a;
}
void setPower(int a)
{
power = a;
}
void setAccuracy(int a)
{
accuracy = a;
}
private:
string name, type;
int type_num, power, accuracy;
};
class ekop
{
public:
ekop()
{
Moveset moveset;
}
private:
class Moveset
{
public:
//constructor
//retrievors
private:
Move slot1, slot2, slot3, slot4;
};
};
int main()
{
//lines of code
return EXIT_SUCCESS;
}
编辑1:我有这个Moveset类的构造函数,但是因为我取出它的时候并没有影响错误,所以我没有在刚才的帖子中包含它。
Moveset()
{
slot1.setName("MOVE 1");
slot1.setType_num(rand()%18);
slot1.setPower(10*(rand%15+1));
slot1.setAccuracy(5*(rand%11+10));
//repeat for the rest of the slots
}
编辑 2: 现在,如果我这样做:
//No change before this
class Moveset
{
public:
//constructor
//retrievors
private:
Move slot1("MOVE 1", rand() % 18, 10*(rand % 15 + 1), 5 * (rand % 11 + 10)),
slot2("MOVE 2", rand() % 18, 10*(rand % 15 + 1), 5 * (rand % 11 + 10)),
slot3("MOVE 3", rand() % 18, 10*(rand % 15 + 1), 5 * (rand % 11 + 10)),
slot4("MOVE 4", rand() % 18, 10*(rand % 15 + 1), 5 * (rand % 11 + 10));
};
};
//no change after this
我得到了这个错误:
62 16 C:\Users\N\Desktop\Untitled1.cpp [Error] expected identifier before string constant
62 16 C:\Users\N\Desktop\Untitled1.cpp [Error] expected ',' or '...' before string constant
63 16 C:\Users\N\Desktop\Untitled1.cpp [Error] expected identifier before string constant
63 16 C:\Users\N\Desktop\Untitled1.cpp [Error] expected ',' or '...' before string constant
64 13 C:\Users\N\Desktop\Untitled1.cpp [Error] expected identifier before string constant
64 13 C:\Users\N\Desktop\Untitled1.cpp [Error] expected ',' or '...' before string constant
65 13 C:\Users\N\Desktop\Untitled1.cpp [Error] expected identifier before string constant
65 13 C:\Users\N\Desktop\Untitled1.cpp [Error] expected ',' or '...' before string constant
【问题讨论】: