简介
我是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);
行中存在此错误。
答案 0 :(得分:4)
在ClientTcp(std::string,std::string);
的声明中,无论您是否将其包含在其他翻译单元中,都需要提供std::string
的定义。
修复方法是#include<string>
中的ClientTcp.h
。
答案 1 :(得分:3)
尝试#include<string>
,这可能是原因。