Faits :
A.
Par jugement du 28 février 2018, le Tribunal de police de l'arrondissement de la Broye et du Nord vaudois a condamné X._, pour homicide par négligence et violation des règles de l'art de construire par négligence, à une peine pécuniaire de 180 jours-amende à 70 fr. le jour, avec sursis durant deux ans. Il a également condamné Y._ pour les mêmes infractions et a dit que les deux prénommés sont les débiteurs de A._ à hauteur de 45'000 fr., avec intérêts, ainsi que de B._ à hauteur de 40'000 fr., avec intérêts, à titre de réparation du tort moral.
B.
Par jugement du 10 septembre 2018, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté les appels formés par X._ et Y._ contre ce jugement et a confirmé celui-ci.
La cour cantonale a retenu les faits suivants.
B.a. X._ est né en 1989 au Kosovo, pays dont il est ressortissant. Arrivé en Suisse à l'âge de trois ans, il y a effectué sa scolarité puis a travaillé dans la société de son père, active dans le domaine des échafaudages. Il ne possède pas de CFC mais a été formé par la Société des entrepreneurs suisses en échafaudages. Il est associé gérant de la société C._ Sàrl.
B.b. Dans le cadre d'un chantier à D._ destiné à la pose de panneaux photovoltaïques sur une grange, la société C._ Sàrl a été chargée des travaux de pose de barrières de protection et d'accès en toiture. Pour ce faire, elle s'est associée à la société E._ Sàrl, dont le chef d'équipe et responsable des chantiers est Y._. Ce dernier, après en avoir parlé avec X._, a décidé de la manière d'intervenir et a choisi le matériel nécessaire. Il a notamment choisi d'utiliser un dispositif d'ancrage consistant en des consoles à visser composées d'une plaque métallique, percées de deux trous en diagonale et fabriquées artisanalement, sur lesquelles étaient soudés deux colliers de serrage. Une fois ancrées, ces consoles devaient servir à fixer des poteaux verticaux en "L" destinés à supporter la barrière de protection horizontale.
Le 18 octobre 2013, X._ et Y._ ont réparti le travail entre les employés des deux sociétés. Au moment de placer la barrière de protection sur la façade sud-ouest du bâtiment, ces derniers ont remarqué que le virement dépassait les pannes-chevrons sur lesquelles devaient être vissées les consoles, empêchant d'y fixer le poteau vertical en "L". Ils ont dès lors ordonné de découper des planches de bois de coffrage de manière à créer une surépaisseur. Celle-ci devait être vissée sous la panne-chevron afin de compenser le dépassement du virevent, tandis que la console devait ensuite être elle-même vissée sur la surépaisseur en bois de coffrage, au-dessous de la panne-chevron.
B.c. F._ travaillait pour le compte de la société E._ Sàrl comme aide-échafaudeur depuis le 1er juillet 2013. Le 18 octobre 2013, alors que les consoles et poteaux verticaux en "L" avaient été posés, le prénommé a décidé d'installer les tubes horizontaux depuis le toit, de manière à terminer la pose de la barrière. Alors qu'il s'affairait à placer les derniers tubes à proximité du faîte du toit, il a glissé. F._ a cherché à se rattraper aux éléments de la barrière déjà posés mais les consoles, insuffisamment ancrées, se sont arrachées, si bien que la barrière n'a pas pu retenir l'intéressé. Ce dernier a chuté d'une hauteur de 11 m environ et il est décédé.
B.d. Au cours de l'instruction, une expertise a été confiée à l'ingénieur civil G._, lequel a collaboré avec H._, docteur ès sciences à I._ et spécialiste des structures bois. L'expert a en substance considéré que le garde-corps litigieux avait cédé car la longeur d'ancrage des vis dans le bois des chevrons était insuffisante. La résistance était en l'occurrence inférieure à la sollicitation. Même si la fixation de l'ensemble des consoles avait été terminée conformément à ce qui était prévu, le garde-corps n'aurait pas répondu aux exigences en la matière. La fixation effectuée ne permettait pas de résister à la sollicitation prévue par la SUVA et les normes applicables. Pour l'expert, le système de fixation des protections latérales révélait un manquement aux règles de l'art et aux normes à prendre en considération. Un sous-dimensionnement de l'assemblage et des vis à bois avait été mis en évidence. L'assemblage des platines des consoles du garde-corps aurait dû être dimensionné conformément aux dispositions qu'il avait indiquées et le garde-corps aurait dû être conforme à la fiche SUVA "Protections latérales - Exigences relatives aux éléments de garde-corps périphériques", moyennant quoi la chute eût été empêchée.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 10 septembre 2018, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté, qu'une indemnité de 23'982 fr. 75 lui est allouée à titre de dépens et que les conclusions civiles de A._ et de B._ sont rejetées. Subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision et, plus subsidiairement, à sa réforme en ce sens qu'il est libéré du chef de prévention de violation des règles de l'art par négligence.
Considérant en droit :
1.
Le recourant reproche à la cour cantonale d'avoir apprécié les preuves et établi les faits de manière arbitraire s'agissant du rôle de l'entreprise C._ Sàrl sur le chantier.
1.1. Le Tribunal fédéral est lié par les faits établis par l'autorité précédente (art. 105 al. 1 LTF), à moins qu'ils n'aient été constatés en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable. Il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (ATF 143 IV 500 consid. 1.1 p. 503). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (ATF 142 III 364 consid. 2.4 p. 368).
1.2. La cour cantonale a repris à son compte l'établissement des faits opéré par le tribunal de première instance sur ce point. Il en ressortait que, pour retenir l'existence d'une collaboration entre les sociétés C._ Sàrl et E._ Sàrl, il avait été tenu compte de la présence du recourant sur le chantier, de la répartition des tâches décidée conjointement par ce dernier et Y._ - alors même que les ouvriers des deux entreprises oeuvraient sur le chantier -, ainsi que de la décision prise par les deux intéressés de procéder au montage litigieux en utilisant une surépaisseur et des panneaux de coffrage pour remédier au fait que le virement dépassait les pannes-chevrons. Selon la cour cantonale, le choix de ce procédé avait précisément constitué l'une des causes de l'accident. Le recourant ne pouvait quant à lui s'exonérer de toute responsabilité en faisant valoir qu'il avait laissé à Y._ le soin de la mise en oeuvre concrète des travaux, puisqu'il s'était lui-même également trouvé à l'origine du risque. Les deux entreprises et, en particulier, le recourant et Y._, avaient donc collaboré sur le chantier. En outre, le recourant savait qu'il manquait des vis sur l'installation litigieuse, ce qu'il avait lui-même admis lors de l'audience de première instance. Enfin, des ouvriers des deux entreprises oeuvraient sur le chantier le jour de l'accident, de sorte qu'il appartenait au recourant, au même titre qu'à Y._, de s'inquiéter du matériel qui serait utilisé et d'ordonner, le cas échéant, l'arrêt du montage si du matériel manquait. Il lui incombait également de s'assurer d'un montage sûr pour ses employés et pour les tiers.
1.3. Le recourant développe une argumentation purement appellatoire et, partant, irrecevable, par laquelle il présente librement sa propre version des événements, sans démontrer en quoi l'état de fait de la cour cantonale serait arbitraire.
Le recourant soutient qu'il aurait complètement sous-traité le chantier à la société E._ Sàrl, qu'il s'y serait trouvé avec ses employés, le jour de l'accident, par un simple concours de circonstance et qu'il se serait alors placé sous la direction de Y._. A supposer même que le recourant n'eût pas, à l'origine, envisagé d'engager son entreprise sur le chantier de D._ et qu'il l'eût finalement fait en raison de l'annulation imprévue d'un autre chantier, on ne voit pas en quoi l'autorité précédente aurait versé dans l'arbitraire en ne retenant pas que, comme le prétend l'intéressé, il serait alors venu se placer sous les ordres de Y._. En effet, lors de l'audition tenue le 2 mai 2014 par le ministère public, le recourant a décrit de la manière suivante son arrivée sur le chantier (cf. PV d'audition 3, p. 4) :
"Pour vous répondre, lorsque nous sommes tous arrivés sur le chantier, nous avons réparti les tâches et avons fait un bref rappel des mesures de sécurité. Nous étions tous ensemble et tant monsieur Y._ que moi, avons fait ce rappel plus particulièrement à destination de nos employés. Ensuite, ceux-ci se sont mélangés."
Concernant plus précisément l'installation litigieuse, le recourant a déclaré ce qui suit (cf. Ibidem) :
"Nous n'avions pas remarqué sur les photographies la problématique posée par les virevents et nous avons dû nous adapter. Au départ, nous avons même envisagé avec monsieur Y._ de découper les virevents. Pour ne pas avoir à poser de surépaisseur. En effet, tout le toit devait être changé de sorte que j'imaginais que les virevents le seraient également. J'ai essayé de téléphoner au représentant de la maison J._ pour lui demander son accord, mais je n'ai pas réussi à le joindre. Nous avons alors renoncé à découper ces virevents et opté ensemble pour le système de la surépaisseur et l'utilisation de panneaux de coffrage, qui sont des bois travaillés et résistants contrairement à de simples planches."
Au vu de ce qui précède, il n'était nullement insoutenable de retenir, comme l'a fait l'autorité précédente, que le recourant ne s'était pas retrouvé, le jour des faits, dans la situation d'un simple subordonné de Y._, mais qu'il avait alors au contraire assuré, aux côtés du prénommé, la direction du chantier - notamment en procédant à la répartition des tâches ou au rappel des règles de sécurité -, de même que décidé - conjointement avec celui-ci - de la manière de résoudre le problème des virevents. C'est d'ailleurs le recourant qui, dans le cadre de la discussion entamée avec Y._ à ce sujet, a tenté d'obtenir l'accord de sa mandante J._ pour découper les virevents. Ainsi, indépendamment des accords passés initialement par les sociétés C._ Sàrl et E._ Sàrl, la cour cantonale pouvait, sans arbitraire, retenir que, le jour de l'accident, le recourant et Y._ avaient collaboré pour mener à bien les travaux et que les deux intéressés avaient conjointement pris la décision de procéder à l'installation litigieuse ayant conduit au sinistre. Le grief doit être rejeté dans la mesure où il est recevable.
2.
Le recourant reproche à la cour cantonale d'avoir violé l'art. 117 CP en le condamnant pour homicide par négligence.
L'intégralité de son argumentation repose sur la prémisse selon laquelle il se serait, le jour des faits, placé sous la direction de Y._ sans prendre part à la décision concernant l'installation litigieuse. Le recourant ne présente donc aucune argumentation recevable - fondée sur l'état de fait de la cour cantonale par lequel le Tribunal fédéral est lié (cf. art. 105 al. 1 LTF) et dont il n'a pas démontré l'arbitraire (cf. consid. 1.3 supra) - concernant une éventuelle violation de la disposition précitée.
3.
Le recourant conteste sa condamnation pour violation des règles de l'art de construire par négligence.
3.1. Dans le jugement attaqué, la cour cantonale a indiqué que le recourant et Y._ devaient être condamnés, outre sur la base de l'art. 117 CP, pour violation des règles de l'art de construire par négligence, dès lors que d'autres personnes que F._ avaient été mises en danger. Elle s'est référée aux motifs du tribunal de première instance concernant cette seconde infraction. Il ressortait du jugement du 28 février 2018 que le garde-corps litigieux était dangereux pour quiconque pourrait y prendre appui et que d'autres travailleurs que le prénommé avaient ainsi été mis en danger.
3.2. Le recourant soutient que sa condamnation à titre de l'art. 229 al. 2 CP violerait l'art. 325 CPP. Aucun grief n'a, sur ce point, été traité par la cour cantonale, sans que l'intéressé ne se plaigne d'un déni de justice formel. Le grief est ainsi irrecevable faute d'épuisement des instances cantonales (cf. art. 80 al. 1 LTF).
C'est également en vain que l'on cherche, dans le jugement attaqué, la discussion d'un grief portant sur une motivation insuffisante concernant la réalisation de cette infraction. Dans sa déclaration d'appel motivée, le recourant n'a d'ailleurs aucunement évoqué cet aspect (cf. pièce 140/1 du dossier cantonal). Dès lors qu'il s'est satisfait de la motivation comprise dans le jugement de première instance s'agissant de cette infraction, le recourant ne saurait reprocher à la cour cantonale de s'y être référée ni se plaindre, pour la première fois devant le Tribunal fédéral, de la teneur des motifs ayant justifié sa condamnation (cf. art. 80 al. 1 LTF). Au demeurant, il apparaît que le recourant a compris la motivation en question, puisqu'il attaque celle-ci devant le Tribunal fédéral.
3.3. Critiquant l'état de fait de la cour cantonale, le recourant conteste que l'ouvrage litigieux eût mis concrètement en danger d'autres personnes que F._.
3.3.1. Selon l'art. 229 CP, celui qui, intentionnellement, aura enfreint les règles de l'art en dirigeant ou en exécutant une construction ou une démolition et aura par là sciemment mis en danger la vie ou l'intégrité corporelle des personnes sera puni d'une peine privative de liberté de trois ans au plus ou d'une peine pécuniaire. En cas de peine privative de liberté, une peine pécuniaire est également prononcée (al. 1). La peine sera une peine privative de liberté de trois ans au plus ou une peine pécuniaire si l'inobservation des règles de l'art est due à une négligence (al. 2).
Pour que l'application de l'art. 229 CP entre en ligne de compte, le comportement délictueux doit concrètement causer la mise en danger de la vie ou de l'intégrité corporelle (BRUNO ROELLI, in Basler Kommentar, Strafrecht II, 4e éd. 2019, nos 41 ss ad art. 229 CP; PAREIN-REYMOND/PAREIN/VUILLE, in Commentaire romand, Code pénal II, 2017, n° 19 ad art. 229 CP; DUPUIS et al., Petit Commentaire du Code pénal, 2e éd. 2017, n° 29 ad art. 229 CP; STRATENWERTH/ WOHLERS, in Schweizerisches Strafgesetzbuch, Handkommentar, 3e éd. 2013, n° 2 ad art. 229 CP; BERNARD CORBOZ, Les infractions en droit suisse, vol. II, 3e éd. 2010, n° 27 ad art. 229 CP; cf. arrêt 6S.237/2002 du 26 juillet 2002 consid. 3.1).
3.3.2. On ignore, à la lecture du jugement attaqué, qui, hormis F._, aurait pu être concrètement mis en danger par l'installation litigieuse. Il ressort certes du jugement du 28 février 2018, auquel la cour cantonale s'est référée sur ce point, que les ouvriers K._ et L._ ont pris part à l'installation des consoles peu avant l'accident. Les deux prénommés ont cependant déclaré, durant l'instruction, qu'ils avaient alors oeuvré - à tout le moins pour partie - depuis une nacelle (cf. PV d'audition 5, p. 2; PV d'audition 8, p. 3). L'état de fait de l'autorité précédente ne permet donc pas de comprendre si cet élément constitutif de l'infraction a été réalisé. En conséquence, le recours doit être admis sur ce point, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale afin que celle-ci complète son état de fait. Il lui appartiendra de déterminer si et dans quelle mesure l'installation litigieuse aurait pu concrètement mettre en danger d'autres personnes que F._, puis d'examiner à nouveau si une infraction à l'art. 229 al. 2 CP a pu être commise (cf. art. 112 al. 3 LTF).
4.
Le recourant conteste la quotité de la peine lui ayant été infligée. Dès lors que la cause doit être renvoyée à l'autorité cantonale afin que celle-ci complète son état de fait et examine à nouveau si le recourant a pu se rendre coupable d'une infraction à l'art. 229 al. 2 CP (cf. consid. 3.3.2 supra), le Tribunal fédéral peut se dispenser de traiter ce grief en l'état.
5.
Le recours doit être partiellement admis, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale pour nouvelle décision (cf. consid. 3.3.2 supra). Pour le reste, le recours doit être rejeté dans la mesure où il est recevable. Le recourant, qui succombe partiellement, supportera une partie des frais judiciaires (art. 66 al. 1 LTF). Il peut prétendre à des dépens réduits, à la charge du canton de Vaud (art. 68 al. 1 LTF). Les intimées, qui n'ont pas été invitées à se déterminer, ne sauraient prétendre à des dépens.
Dès lors que l'admission du recours porte sur une insuffisance de l'état de fait, il peut être procédé au renvoi sans ordonner préalablement un échange d'écritures (cf. ATF 133 IV 293 consid. 3.4.2 p. 296).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis, le jugement attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision. Pour le surplus, le recours est rejeté dans la mesure où il est recevable.
2.
Une partie des frais judiciaires, arrêtée à 2'000 fr., est mise à la charge du recourant.
3.
Le canton de Vaud versera au recourant une indemnité de 1'000 fr. à titre de dépens réduits pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 23 janvier 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa