Кажется, я очень расстраиваюсь, когда унаследованный класс вызывает явный конструктор суперкласса. Я просто не могу понять синтаксис правильно!
Все примеры, которые я до сих пор видел по этому вопросу, не отделяют определение заголовка и встроенный класс (используя {}) от forward-объявлений с файлом заголовка, поэтому я не уверен, как чтобы охватить синтаксис между файлами .h и .cc. Любая помощь будет оценена!
Вот ошибка, которую компилятор выдает мне (gcc):
serverconnection.h: В
конструктор
«ServerConnection :: ServerConnection (станд :: строка,
std :: string) ": serverconnection.h: 25:
ошибка: ожидается `{'в конце ввода
serverconnection.cc: в глобальном масштабе:
serverconnection.cc:20: ошибка:
переопределение
«ServerConnection :: ServerConnection (станд :: строка,
unsigned int, короткое unsigned int,
PacketSender *, int) "
serverconnection.h: 25: ошибка:
«ServerConnection :: ServerConnection (станд :: строка,
unsigned int, короткое unsigned int,
PacketSender *, int) "ранее
определяется здесь serverconnection.cc: в
конструктор
«ServerConnection :: ServerConnection (станд :: строка,
std :: string) ": serverconnection.cc:20:
ошибка: нет подходящей функции для вызова
в «Соединение :: Соединение ()»
Я понимаю, что он пытается вызвать конструктор Connection по умолчанию, Connection (), поскольку он просто не понимает мой синтаксис.
Вот код:
connection.h:
class Connection {
public:
Connection(string myOwnArg);
};
connection.cc:
#include "connection.h"
Connection::Connection(string myOwnArg) {
//do my constructor stuff
}
serverconnection.h:
#include "connection.h"
class ServerConnection : public Connection {
public:
ServerConnection(string myOwnArg, string superClassArg) : Connection(superClassArg);
};
serverconnection.cc:
#include "serverconnection.h"
#include "connection.h"
ServerConnection::ServerConnection(string myOwnArg, string superClassArg) {
//do my constructor stuff
}
Заранее большое спасибо!