c++ - 无法调用 friend 类的构造函数

标签 c++ class constructor private friend

<分区>

我试图从节点类的定义内部调用我的 SocketConnection 构造函数,但我无法理解我遇到的编译错误 - 我不明白为什么编译器认为我为 SocketConnection 声明的构造函数是不是构造函数。

以下是.h文件代码的主要部分:

class Node
{
    public:
    Node() ; 
    int OnStart() ; 
    friend class SocketConnection ; 
} ; 

class SocketConnection
{
    public:
    Node * m_nptr ; 
    int m_sockfd ; 
    SocketConnection(Node * nptr) ; 
};

以下是 .cpp 文件的主要部分:

int Node::OnStart()
{
    SocketConnection newConnection(this) ; 
    return 0 ; 
}

SocketConnection::SocketConection(Node * nptr): m_nptr(nptr)
{

}

在编译时,我得到:

error: ISO C++ forbids declaration of ‘SocketConection’ with no type
error: no ‘int SocketConnection::SocketConection(Node*)’ member function declared in class ‘SocketConnection’
In member function ‘int SocketConnection::SocketConection(Node*)’:
error: only constructors take base initializers

有人可以帮助我理解这一点吗?

干杯, N.

最佳答案

你有一个错字:

SocketConnection::SocketConection(Node * nptr): m_nptr(nptr)
//                        ^

改成:

SocketConnection::SocketConnection(Node * nptr): m_nptr(nptr)
//                        ^^

关于c++ - 无法调用 friend 类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758405/

相关文章:

c++ - 在我的项目中包含 Eigen 将标准 int 重新定义为 Eigen::DenseIndex - 如何使用普通 int?

c++ - 一个声明中有多种类型的问题

c++ - 元组的定义和初始化,其组件属于相同的模板类,但具有不同的特化

c++ - gSoap 中适当的内存控制

c++ - 如何将自动 lambda 参数限制为指向成员函数的指针?

class - 基本matlab类方法

Python MyHashTable 类 : search method with linear probing

c++ - 如何用这个亲属构造对象

constructor - VB 中构造函数的正确语法?

java - 在类主体或构造函数中初始化类成员?