簡體   English   中英

錯誤:無法在不同模塊中定義“enum class std::align_val_t”

[英]Error: cannot define 'enum class std::align_val_t' in different module

我是 C ++ 初學者,正在尋找創建模塊的機會。 我遵循了幾個指南,並想用類測試模塊。 當我嘗試通過g++-11 -c -std=c++20 -fmodules-ts func.cxx運行第一個模塊時,出現以下錯誤:

In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/char_traits.h:39,
                 from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:40,
                 from func.cxx:2:
/usr/local/Cellar/gcc/11.2.0_3/include/c++/11/new:89:27: error: cannot define 'enum class std::align_val_t' in different module
   89 |   enum class align_val_t: size_t {};
      |                           ^~~~~~
<built-in>: note: declared here
/usr/local/Cellar/gcc/11.2.0_3/include/c++/11/new:89: confused by earlier errors, bailing out

以下是文件,在此先感謝。

主.cpp

#include <iostream>
import airline_ticket;


int main()
{
  std::cout << "Hello" << std::endl;
  return 0;
}

函數.cxx

export module airline_ticket;
#include <string>

export class AirlineTicket
{

public:

AirlineTicket();
~AirlineTicket();

double calculatePriceInDollars(); std::string getPassengerName();

void setPassengerName(std::string name);

int getNumberOfMiles();
void setNumberOfMiles(int miles);

bool hasEliteSuperRewardsStatus();
void setHasEliteSuperRewardsStatus(bool status);

private:
std::string m_passengerName;
int m_numberOfMiles;
bool m_hasEliteSuperRewardsStatus;

};

func_impl.cxx

module airline_ticket;

AirlineTicket::AirlineTicket()
{
// Initialize data members.
m_passengerName = "Unknown Passenger";
m_numberOfMiles = 0;
m_hasEliteSuperRewardsStatus = false;
}

func.cxx 中的 include 指令需要在全局模塊片段區域中。 否則你會得到重新定義。

IE

module;
#include <string>
export module .....
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM