-1
내부에 클래스를 초기화하고 TCP 소켓을 열고 싶습니다.하지만 그 클래스의 메소드를 호출 할 때만 반복해서 쓰고 싶습니다. 매번 연결을 다시 설정하십시오.asio 소켓, 클래스 선언 내부, 범위 문제
내 코드는 다음과 같습니다. 코드 블록 아래에 여기에 붙여 넣은 컴파일 시간 오류가 발생합니다. 메서드는 생성자에서 초기화 된 소켓을 볼 수 없습니다. 간단한 C++ "범위"문제인 것처럼 보이지만 저를 때려 눕 힙니다. 여기
#include <ctime>
#include <iostream>
#include <string>
#include <asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
using asio::ip::udp;
using asio::ip::tcp;
class rpcClass {
char sendBuffer[16];
asio::ip::tcp::endpoint epdPt;
asio::io_service io_service;
asio::ip::tcp::endpoint endPt;
public:
rpcClass() { // constructor
asio::ip::tcp::socket socketTCP(io_service);
strcpy (sendBuffer, "*Constructor*\n");
endPt = asio::ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"),\
boost::lexical_cast<int>(5004));
socketTCP.connect(endPt);
socketTCP.write_some (asio::buffer(sendBuffer));
};
void sendRPCData (void) { //send data when called from main()
strcpy (sendBuffer, "rpcData\n");
socketTCP.write_some (asio::buffer(sendBuffer));
};
};
int main(void) {
rpcClass rpc; // I WANT THE rpc OBJECT TO SEND DATA
rpc.sendRPCData(); // ONLY WHEN THIS METHOD IS CALLED
return (0);
}
오류 출력 (이클립스)
rpc-class.cpp: In member function ‘void rpcClass::sendRPCData()’:
rpc-class.cpp: error: ‘socketTCP’ was not declared in this scope
감사 도와 줘서 많이입니다! -pn