Я вернулся к изучению C ++, проводя некоторые старые университетские курсы, и сейчас я изучаю параметрический полиморфизм, а также создаю свои собственные пространства имен.В упражнении говорится, что я должен создать пространство имен с именем «Федерация», в котором есть класс «Корабль», который принимает значения, и одно значение по умолчанию, которое никогда не изменяется.внутри пространства имен федерации также есть пространство имен «Звездный флот», в котором у нас также есть класс «Корабль», единственное отличие состоит в том, что указанное по умолчанию значение может быть указано пользователем.
Вот код:
Federation.hpp
#include <iostream>
#include <string>
#include <cstring>
namespace Federation
{
namespace Starfleet
{
class Ship
{
public:
Ship(int length, int width, std::string name, short maxWarp);
~Ship();
private:
int _length;
int _width;
std::string _name;
short _maxWarp;
};
};
class Ship
{
public:
Ship(int length, int width, std::string name);
~Ship();
private:
int _length;
int _width;
std::string _name;
}
};
Federation.cpp
#include "Federation.hpp"
using namespac std;
Federation::Starfleet::Ship::Ship(int length, int width, string name, short maxWarp): _length(length), _width(width), _name(name), _maxWarp(maxWarp)
{
cout << "Starfleet Ship Created." << endl;
}
Federation::Starfleet::Ship::~Ship()
{
}
Federation::Ship::Ship(int length, int width, string name, int speed = 1): _length(length), _width(width), _name(name)
{
cout << "Regular Ship Created"
}
Federation::Ship::~Ship()
{
}
main.cpp
#include "Federation.hpp"
int main(int ac, char **av)
{
Federation::Starfleet::Ship mainShip(10, 10, "Starfleet Ship", 20);
Federation::Ship smallShip(5, 5, "Small Ship");
}
При компиляции я получаю эту ошибку: "прототип для Federation :: Ship :: Ship (int, int, std :: __ cxx11:: string, int) не соответствует ни одному классу в Federation :: Ship "
Я совершенно не понимаю, что это значит, когда я смотрю на свои функции в моем файле hpp, все они кажутсячтобы быть точным, поэтому я не совсем понимаю, что именно я делаю не так в этом случае.