正在头类中为私有变量创建内联函数

Creating inline function in header class to a private variable

本文关键字:创建 变量 函数      更新时间:2023-10-16

我必须制作一个链表。首先,我不确定我做这件事是否正确。但基本上,该项目说我不允许创建.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; }
};

你已经成功了一半。您需要在头文件中声明函数,正如您所做的那样。

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

您缺少的另一部分是在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;
}

目前还不清楚您打算为哪些节点设置这些值,所以我将在函数中填充一些假设。

不管怎样,我想你都明白了。如果要在头类中定义内联函数,则不能在类本身中定义正文。您必须在类的主体之外以内联方式声明它,这是编译器建议。我知道我没有完全定义链表的功能,我将把它留给你。但是,这应该回答内联问题。