Faits :
A.
Par jugement du 24 septembre 2018, le Tribunal de police de l'arrondissement de la Broye et du Nord vaudois a libéré X._ du chef de prévention de désagréments causés par la confrontation à un acte d'ordre sexuel.
B.
Par jugement du 8 janvier 2019, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a admis l'appel formé par le ministère public contre ce jugement et a réformé celui-ci en ce sens que X._ est condamné, pour désagréments causés par la confrontation à un acte d'ordre sexuel, à une amende de 1'000 francs.
La cour cantonale a retenu les faits suivants.
B.a. X._ est né en xx en xx. Il s'est établi en Suisse avec son épouse en xx. Il est père de trois enfants. Jusqu'au xx, l'intéressé exerçait la profession de xx au sein de A._.
B.b. Le 2 février 2018, à B._, C._, née en 2001, et D._, née en 1994, toutes deux placées auprès de A._, se sont rendues auprès de X._ afin de récupérer des fers à béton pour leur enseignante. Très rapidement, le prénommé a adopté une attitude inadéquate, passant notamment ses mains au niveau de la poitrine des deux jeunes femmes - sans jamais parvenir à les toucher -, tout en scrutant avec insistance cette partie de leur corps. X._ a ensuite déclaré qu'il pouvait commander toutes sortes de fers à béton, "des longs, des gros, des durs". Après avoir posé un fer à béton sur sa cuisse, il s'est empressé de dire à quel point l'objet était dur. Simultanément, le prénommé a touché ses pectoraux, avant d'ajouter qu'il était "très créatif et ouvert à tout". Tandis que les deux jeunes femmes tentaient de revenir sur la question qui les intéressait, X._ a indiqué qu'il pratiquait la voile, qu'il adorait "se mouiller entièrement" et avait un "physique de jeune". Enfin, il a regardé D._ avec insistance, tout en lui faisant remarquer qu'elle "ne devait pas faire de sport", figurant, avec ses mains, le fait que celle-ci avait une poitrine imposante. L'échange a duré une dizaine de minutes. C._ et D._ ont profité de l'arrivée de clients pour quitter les lieux.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 8 janvier 2019, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté et, subsidiairement, à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision.
D.
Invités à se déterminer, le ministère public s'est référé à sa déclaration d'appel ainsi qu'au jugement attaqué, tandis que la cour cantonale s'est référée au jugement attaqué en présentant quelques observations. X._ s'est encore déterminé sur cette prise de position.

Considérant en droit :
1.
Le recourant reproche à l'autorité précédente d'avoir violé l'<ref-law>, en faisant application de cette disposition tout en revoyant librement l'état de fait compris dans le jugement de première instance.
1.1. Aux termes de l'<ref-law>, lorsque seules des contraventions ont fait l'objet de la procédure de première instance, l'appel ne peut être formé que pour le grief que le jugement est juridiquement erroné ou que l'état de fait a été établi de manière manifestement inexacte ou en violation du droit. Aucune nouvelle allégation ou preuve ne peut être produite.
Il découle de cette formulation, qui correspond à celle de l'<ref-law>, que le pouvoir d'examen de l'autorité d'appel est limité à l'arbitraire en ce qui concerne l'établissement des faits. Celle-ci peut, en revanche, revoir librement le droit (arrêts 6B_622/2018 du 14 août 2018 consid. 2.1; 6B_458/2017 du 8 février 2018 consid. 1.3; 6B_360/2017 du 9 octobre 2017 consid. 1.3 et les références citées).
1.2. L'autorité précédente a traité l'appel du ministère public selon la procédure prévue à l'<ref-law>, aspect que le recourant ne remet pas en question. Ce dernier reproche en revanche à la cour cantonale de s'être écartée de l'état de fait établi par le tribunal de première instance.
1.2.1. Le tribunal de première instance avait retenu que C._ et D._ s'étaient rendues à l'atelier de maçonnerie afin d'y prendre des fers à béton. Sur place, elles avaient commencé à discuter avec des apprentis qui leur avaient montré des fils de fer. Comme ceux-ci ne correspondaient pas à ce que cherchaient les prénommées, le recourant était intervenu. C._ et D._ souhaitaient des fils de fer, mais ceux de la longueur qu'elles désiraient n'étaient pas disponibles. Durant la discussion relative aux fils de fer, les trois intéressés avaient aussi parlé de voile, sport pratiqué par l'une de leurs connaissances communes ainsi que par le recourant. Comme C._ et D._ cherchaient des fers à béton, tous trois s'étaient rendus à l'extérieur de l'atelier et le recourant leur avait montré de tels objets.
Le tribunal de première instance avait retenu que, durant cet échange, le recourant n'avait à aucun moment touché C._ et D._. Ces dernières avaient admis que le recourant n'avait jamais fait directement référence à des actes sexuels, aux organes génitaux ou à d'autres parties de leur corps, mais s'étaient plaintes d'allusions détournées à caractère sexuel. A cet égard, le recourant avait fourni des explications suffisamment convaincantes pour retenir que les indications fournies concernant les fers à béton étaient d'ordre professionnel et que les propos tenus relativement à la pratique de la voile n'étaient pas davantage connotés sexuellement. Selon le tribunal de première instance, il ne pouvait par ailleurs être retenu que le recourant se serait caressé la poitrine d'une façon suggestive, puisque celui-ci avait expliqué qu'il parlait beaucoup avec les mains - ce qui avait été confirmé par un témoin - et croisait fréquemment celles-ci sous les aisselles. Enfin, lorsque le recourant s'était adressé à D._ en lui faisant remarquer qu'elle ne devait "pas faire de sport", il n'avait pas été démontré qu'il aurait figuré, avec ses mains, la poitrine de la prénommée.
Il ne ressortait donc pas de cet état de fait que le recourant aurait eu l'intention - durant la conversation - de lancer, par les gestes ou la parole, des sous-entendus à caractère sexuel. Il n'en ressortait pas davantage que l'intéressé aurait tenté de toucher le corps de C._ et D._, qu'il aurait jeté sur elles des regards concupiscents ou figuré, par le geste, la poitrine de la dernière nommée. Il n'en ressortait enfin aucunement que le recourant se serait caressé le torse, mais seulement qu'il avait touché celui-ci en soulignant ses paroles par des gestes ou en croisant et décroisant ses bras pour placer ses mains sous les aisselles.
1.2.2. Il ressort en revanche de l'état de fait de la cour cantonale que le recourant a, durant la conversation avec C._ et D._, passé ses mains "au niveau de la poitrine des deux jeunes femmes" en tentant de les toucher et qu'il a scruté "avec insistance" cette partie de leur corps. Il en ressort également que le recourant a posé des "regards insistants sur la poitrine et les corps" des deux intéressées, qu'il a caressé ses pectoraux, qu'il a regardé D._ "avec insistance" et a figuré, avec ses mains, le fait que la prénommée avait une poitrine opulente. Enfin, il ressort de cet état de fait que le recourant a eu l'intention de procéder à des sous-entendus à caractère sexuel par diverses paroles, ou de figurer des allusions de cette nature, par exemple en posant un fer à béton sur sa cuisse à titre d'"allusion phallique".
Aucun de ces éléments ne ressortait de l'état de fait établi par le tribunal de première instance.
1.3. Dans le jugement attaqué, la cour cantonale a indiqué que le tribunal de première instance avait présenté les versions contradictoires de C._ et D._, d'une part, et du recourant, d'autre part, puis avait opté pour la thèse de l'intéressé "en ce sens que les gestes et propos de ce dernier à l'égard des jeunes femmes seraient dépourvus de connotation sexuelle". L'autorité précédente a estimé que, ce faisant, le tribunal de première instance avait tranché une "question juridique, soit la non réalisation de l'un des éléments constitutifs de la contravention réprimée par l'<ref-law>", avant de conclure que son propre pouvoir d'examen, qui "ne s'exer[çait] que sur une question de droit, n'[était] pas limité".
Ces considérations ne sauraient être partagées. En effet, l'autorité précédente ne s'est pas limitée à traiter une question de droit, ce qui aurait été le cas s'il s'était uniquement agi de déterminer si une expression ou un geste particulier - retenu par le tribunal de première instance - pouvait constituer une parole grossière ou un attouchement d'ordre sexuel au sens de l'<ref-law>. Elle a au contraire procédé à une nouvelle appréciation des preuves, afin d'écarter les explications du recourant - qui avaient été retenues par le tribunal de première instance - et de conclure que sa version des événements n'était pas crédible. Au terme de cette démarche, la cour cantonale a établi un nouvel état de fait, s'écartant en divers points de celui du tribunal de première instance (cf. consid. 1.2.1 et 1.2.2 supra). Or, selon une jurisprudence constante, déterminer ce qu'une personne a su, envisagé, voulu ou accepté relève du contenu de sa pensée, à savoir de faits "internes", partant, des constatations de fait (cf. <ref-ruling> consid. 12 p. 152; <ref-ruling> consid. 6.3 p. 375).
Au vu de ce qui précède, la cour cantonale n'a pas limité son pouvoir de cognition comme le lui imposait l'<ref-law>, mais a librement revu l'état de fait établi par le tribunal de première instance. On peut exclure que l'autorité précédente aurait implicitement considéré que cet état de fait avait été établi de manière manifestement inexacte ou en violation du droit, puisqu'elle n'a relevé aucun élément probatoire qui aurait pu être arbitrairement apprécié par le tribunal de première instance mais a indiqué - après avoir opposé les versions des différents protagonistes - que les "explications laborieuses et décousues du [recourant] n'emport[aient] pas la conviction". Ce qui précède ne saurait être contredit par l'indication, comprise dans les déterminations présentées par la cour cantonale, selon laquelle l'appréciation des preuves opérée par le tribunal de première instance se serait en définitive révélée "arbitraire", puisqu'une telle considération ne ressort aucunement du jugement attaqué.
1.4. Une correcte application de l'<ref-law> aurait donc dû conduire la cour cantonale à examiner l'infraction reprochée au recourant sur la base de l'état de fait établi par le tribunal de première instance, dès lors que celui-ci n'était - selon sa propre appréciation - pas entaché d'arbitraire. On peine à percevoir quel élément ressortant de cet état de fait (cf. consid. 1.2.1 supra) - et non de celui établi par la cour cantonale - pouvait être envisagé comme constitutif de paroles grossières au sens de l'<ref-law>. Quoi qu'il en soit, cette disposition suppose - d'un point de vue subjectif - que l'auteur eût voulu ou à tout le moins envisagé que ses agissements pussent importuner la victime (cf. <ref-ruling> consid. 3.1 p. 267). Or, il ressortait précisément de l'état de fait compris dans le jugement de première instance que le recourant n'avait pas entendu, par ses gestes ou ses paroles, se montrer grossier ni formuler des sous-entendus à caractère sexuel. Une telle constatation de fait excluait de toute manière une condamnation du recourant sur la base de l'<ref-law>.
En définitive, le recours doit être admis, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale afin qu'elle libère le recourant du chef de prévention de désagréments causés par la confrontation à un acte d'ordre sexuel.
2.
Le recours est admis. Le recourant, qui obtient gain de cause, ne supporte pas de frais judiciaires (<ref-law>). Il peut prétendre à de pleins dépens, à la charge du canton de Vaud (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, le jugement attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires.
3.
Le canton de Vaud versera au recourant une indemnité de 3'000 fr. pour ses dépens dans 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 31 juillet 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa