在标头类中向私有变量创建内联函数

我必须列出一个链表。我不确定我是否首先要正确执行此操作。但基本上,该项目说我不允许制作.cpp文件,但我必须通过.h文件创建4个内联语句。

class Queue{
private:
struct QueueNode{
    int size;
    std::string party;
    QueueNode *next;
};
QueueNode *front;
QueueNode *rear;
public:
// Constructor
Queue();

// Destructor
~Queue();

// Queue operations
std::string getPartyName() const { return party; } // This and next 3 lines give error with the private variables
int getSize() const { return size; }
void setPartyName(std::string p) const{ party = p; }
void setSize(int s) const{ size = s; }
};
yuank888 回答:在标头类中向私有变量创建内联函数

您在那儿。完成后,您需要在头文件中声明函数。

缺少的步骤是,您不需要在类主体中定义函数,而是需要在类声明下使用带有作用域解析运算符和内联运算符的类名称来定义它们。

您缺少的另一部分是,您在Queue类中声明了可能用于QueueNode结构的函数。

class Queue{
private:
struct QueueNode{
    int size;
    std::string party;
    QueueNode *next;
};

   QueueNode *front;
   QueueNode *rear;
   public:
   // Constructor
   Queue();

   // Destructor
   ~Queue();

   // Queue operations
   std::string getPartyName( const QueueNode * const node ) const; 
   int getSize( const QueueNode * const node ) const;
   void setPartyName( QueueNode & out_node,std::string & p);
   void setSize( QueueNode & out_node,int s);
};

inline std::string Queue::getPartyName( const QueueNode * const node ) const 
{
   return node->party;
}

inline int getSize( const QueueNode * const node ) const {
   return node->size;
}

inline void Queue::setPartyName( QueueNode & out_node,std::string & p) {
   out_node.party = p;
}

inline void Queue::setSize( QueueNode & out_node,int s) {
   out_node.size = s;
}

尚不清楚您打算为哪些节点设置这些值,因此我将在一些假设的情况下填写这些函数。

无论哪种方式,我认为您都明白。如果要在标头类中定义内联函数,则不能在类本身中定义主体。您必须在类主体之外内联声明它,这是编译器建议。我知道我还没有完全定义链表的功能,我将留给您。但是,这应该可以回答内联问题。

本文链接:https://www.f2er.com/3147402.html

大家都在问