无法调用朋友类的构造函数

时间:2013-05-26 10:38:06

标签: 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.

1 个答案:

答案 0 :(得分:1)

你有一个错字:

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

将其更改为:

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