构造函数的问题

时间:2015-07-24 11:30:23

标签: c++ oop

简介

我是C ++的新手。我开始阅读一些书籍并在互联网上搜索一些东西。但我的主要问题是调试C ++代码和基础知识。

所以,我想创建一个名为ClientTcp的新类。 如果创建没有参数的对象,则IP和端口应为标准(127.0.0.1:8000)。

我已经阅读了这个问题Constructor Overloading in C++

所以我创建了这段代码:

ClientTcp.h文件。

class ClientTcp{
    public:
        // non arguments, create loopback connection
        ClientTcp();

        ClientTcp(std::string, std::string);

        virtual ~ClientTcp();
    protected:
    private:
        std::string ip_, port_;
};

ClientTcp.cpp文件

#include "ClientTcp.h"

ClientTcp::ClientTcp(){
    ip_ = "127.0.0.1";
    port_ = "8000";
}

ClientTcp::ClientTcp(std::string ip, std::string port){
    ip_.assign(ip);
    port_.assign(port);
}

ClientTcp::~ClientTcp(){
    //dtor
}

Main.cpp文件

#include <string>
#include <iostream>
#include "json.hpp"
#include <ClientTcp.h>

std::string cip, cport;
cip = "127.0.0.1";
cport = "9510";
ClientTcp c(cip, cport);

问题 这看起来很完美,但我有一个我无法理解的荒谬错误。

error: expected ‘)’ before ‘,’ token|

ClientTcp(string, string);行中存在此错误。

2 个答案:

答案 0 :(得分:4)

ClientTcp(std::string,std::string);的声明中,无论您是否将其包含在其他翻译单元中,都需要提供std::string的定义。

修复方法是#include<string>中的ClientTcp.h

答案 1 :(得分:3)

尝试#include<string>,这可能是原因。