我有一个基类Media和几个派生类,即DVD,Book等...的基类写为:
class Media{
private:
int id;
string title;
int year;
public:
Media(){ id = year = 0; title = ""; }
Media(int _id, string _title, int _year): id(_id), title(_title), year(_year) {}
// virtual ~Media() = 0;
void changeID(int newID){ id = newID; }
virtual void print(ostream &out);
};
Run Code Online (Sandbox Code Playgroud)
事情是:没有析构函数,GCC给了我一堆警告class has virtual functions but non-virtual destructor,但仍然编译,我的程序工作正常.现在我想摆脱那些烦人的警告,所以我通过添加一个虚拟析构函数来满足编译器,结果是:它没有编译,错误:
undefined reference to `Media::~Media()`
Run Code Online (Sandbox Code Playgroud)
使析构函数纯虚拟并不能解决问题.出了什么问题?
如果之前有人问过这个问题,但我找不到任何相关的答案,请原谅我。
考虑一个将数字类型作为输入参数的函数:
def foo(a):
return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)
这适用于整数、浮点数和复数。
是否有基本类型,以便我可以进行类型提示(真实现有类型/基类),例如:
def foo(a: numeric):
return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)
此外,我需要在集合类型参数中使用它,例如:
from typing import Collection;
def foo(_in: Collection[numeric]):
return ((_in[0]+_in[1])*2)**4;
Run Code Online (Sandbox Code Playgroud) 我*.xcodeproj不小心把一些文件放在同一级别的文件中.当我将这些文件移动到Finder中的正确位置时,Xcode告诉我这些文件丢失了.所以我删除了包含这些文件名称已被读取的组(我意识到这是一个错误).然后我将这些文件从Finder拖到xcode中以构建一个新组.但是当我尝试运行该项目时,Xcode仍然无法找到这些代码.我该如何解决这个问题?
我试图打印"Hello World"200,000次,它让我永远,所以我必须停下来.但是在我添加一个char数组作为缓冲区后,它花了不到10秒.为什么?
在添加缓冲区之前:
#include <iostream>
using namespace std;
int main() {
int count = 0;
std::ios_base::sync_with_stdio(false);
for(int i = 1; i < 200000; i++)
{
cout << "Hello world!\n";
count++;
}
cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是在添加缓冲区之后:
#include <iostream>
using namespace std;
int main() {
int count = 0;
std::ios_base::sync_with_stdio(false);
char buffer[1024];
cout.rdbuf()->pubsetbuf(buffer, 1024);
for(int i = 1; i < 200000; i++)
{
cout << "Hello world!\n";
count++;
}
cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这让我想起了Java.使用BufferReader读取文件有什么好处?
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
Run Code Online (Sandbox Code Playgroud)
在这个结构中,究竟是什么意思地址家族所描述的sa_family?
这是否意味着像TCP/UDP这样的协议有"地址"?嗯,我认为协议可以是识别号码而不是地址.
无论如何,如果是,那么他们的家庭在什么基础上被划分?
如何从OSX中的终端暂停(不停止)正在运行的脚本,以便稍后从暂停的点恢复?
BaseHTTPServer和SimpleHTTPServer有什么区别?我应该在何时何地使用这些?
在我的C++程序中,我有字符串
string s = "/usr/file.gz";
Run Code Online (Sandbox Code Playgroud)
在这里,如何使脚本检查.gz扩展(无论文件名是什么)并将其拆分为"/usr/file"?
我正在尝试将我用相机捕获的实时视频帧发送到服务器并处理它们.我是用于图像处理的opencv和用于该语言的python.这是我的代码
client_cv.py
import cv2
import numpy as np
import socket
import sys
import pickle
cap=cv2.VideoCapture(0)
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('localhost',8089))
while True:
ret,frame=cap.read()
print sys.getsizeof(frame)
print frame
clientsocket.send(pickle.dumps(frame))
Run Code Online (Sandbox Code Playgroud)
server_cv.py
import socket
import sys
import cv2
import pickle
import numpy as np
HOST=''
PORT=8089
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print 'Socket created'
s.bind((HOST,PORT))
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'
conn,addr=s.accept()
while True:
data=conn.recv(80)
print sys.getsizeof(data)
frame=pickle.loads(data)
print frame
cv2.imshow('frame',frame)
Run Code Online (Sandbox Code Playgroud)
这段代码给了我文件结束错误,这是合乎逻辑的,因为数据总是不停地进入服务器而pickle不知道何时完成.我在互联网上的搜索让我使用泡菜,但它到目前为止还没有用.
注意:我设置conn.recv为80,因为这是我说的时候得到的数字print sys.getsizeof(frame).
我使用简单的HTTP Server BaseHTTPRequestHandler.问题是,当我想使用来自客户端的请求发布一些数据时,我得到了ConnectionError.我从requestslib文档做了简单的请求.同样有趣的是,HTTP Server将从客户端接收数据并将其打印到控制台.我不明白它是如何可能的.
客户:
def post_data():
"""Client method"""
json_data = {
'sender': 'User',
'receiver': 'MY_SERVER',
'message': 'Hello server! Sending some data.'}
data_headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data_payload = json.dumps(json_data)
try:
post = requests.post('http://localhost:8080/post', data=data_payload,
headers=data_headers)
print(post.status_code)
except ConnectionError as e:
print("CONNECTION ERROR: ")
print(e)
Run Code Online (Sandbox Code Playgroud)
HTTP服务器:
def do_POST(self):
"""Server method"""
self.send_response(200)
print("Receiving new data ...")
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
print(post_data)
Run Code Online (Sandbox Code Playgroud)
服务器结果:
C:\Users\mypc\Projects\PythonFiles\httpserver>python server.py
Fri Jan 5 01:09:12 2018: HTTP Server started on …Run Code Online (Sandbox Code Playgroud) python ×4
c++ ×3
bash ×1
buffer ×1
http ×1
httpserver ×1
macos ×1
networking ×1
numpy ×1
opencv ×1
python-3.x ×1
sockets ×1
string ×1
substring ×1
terminal ×1
type-hinting ×1
types ×1
xcode ×1