获取"does not name a type error",但我正在命名一个类型
Getting "does not name a type error", but I am naming a type
我确定我在这里忽略了一些基本的东西,但我想不通。我有这段代码:
boost::asio::io_service smpp_io_service;
tcp::endpoint endpoint(ip::address_v4::from_string("192.168.0.25"), 2775);
std::shared_ptr<tcp::socket> smpp_socket(new tcp::socket(smpp_io_service));
smpp_socket->connect(endpoint);
SmppClient client(smpp_socket);
void wx_test2Frame::OnButton1Click(wxCommandEvent& event)
{
Logger::out( "Connecting..." );
try {
client.setVerbose(true);
client.bindTransceiver(txtSystemId->GetValue().ToStdString(), txtPassword->GetValue().ToStdString());
Logger::out( "Connected" );
那些前 5 行在 OnButton1Click
函数内部时工作正常,但是一旦我将它们移到外部(因为我不希望连接在函数结束时关闭),我得到
error: smpp_socket does not name a type
指向 smpp_socket->connect(endpoint);
行。
但是正上方的行将类型命名为 std::shared_ptr<tcp::socket>
,不是吗?
我做错了什么?
命名空间范围只能包含声明,smpp_socket->connect(endpoint);
不是声明 - 它是语句。
C++ 标准部分 [basic.link]/1 读取:
A program consists of one or more translation units (Clause 2) linked together. A translation unit consists of a sequence of declarations.
有错误的行在全局范围内,它不是声明或 class/method/function 定义 - 它是函数调用吗?您必须在函数内执行此操作。
我确定我在这里忽略了一些基本的东西,但我想不通。我有这段代码:
boost::asio::io_service smpp_io_service;
tcp::endpoint endpoint(ip::address_v4::from_string("192.168.0.25"), 2775);
std::shared_ptr<tcp::socket> smpp_socket(new tcp::socket(smpp_io_service));
smpp_socket->connect(endpoint);
SmppClient client(smpp_socket);
void wx_test2Frame::OnButton1Click(wxCommandEvent& event)
{
Logger::out( "Connecting..." );
try {
client.setVerbose(true);
client.bindTransceiver(txtSystemId->GetValue().ToStdString(), txtPassword->GetValue().ToStdString());
Logger::out( "Connected" );
那些前 5 行在 OnButton1Click
函数内部时工作正常,但是一旦我将它们移到外部(因为我不希望连接在函数结束时关闭),我得到
error: smpp_socket does not name a type
指向 smpp_socket->connect(endpoint);
行。
但是正上方的行将类型命名为 std::shared_ptr<tcp::socket>
,不是吗?
我做错了什么?
命名空间范围只能包含声明,smpp_socket->connect(endpoint);
不是声明 - 它是语句。
C++ 标准部分 [basic.link]/1 读取:
A program consists of one or more translation units (Clause 2) linked together. A translation unit consists of a sequence of declarations.
有错误的行在全局范围内,它不是声明或 class/method/function 定义 - 它是函数调用吗?您必须在函数内执行此操作。