所以这就是我在Java中注意到的:
如果我上课:
class IntStorage
{
public int i;
public void setInt(int i) { this.i = i; }
public int getInt() { return i; }
}
Run Code Online (Sandbox Code Playgroud)
并继承它,并存储其他数据:
class IntAndStringStorage : IntStorage
{
public String s;
public void setString(String s) { this.s = s; }
public String getString() { return s; }
}
Run Code Online (Sandbox Code Playgroud)
我这样做:
IntAndStringStorage IandSstorage = new IntAndStringStorage();
IandSstorage.setString("Test");
IntStorage Istorage = (IntStorage)IandSstorage;
IntAndStorageStorage test = (IntAndStorageStorage)Istorage;
System.out.println(test.getString());
Run Code Online (Sandbox Code Playgroud)
即使我将它转换为继承的类,它也完全有效.现在我假设信息仍然在对象内部,那么我可以完全将它转换为继承的类而不保留旧信息吗?我不想在我的int存储类中留下String存储.希望我的问题足够清楚!提前致谢!
我已经做了一段时间了:
int* myIntPointer;
string* myString1,* myString2;
Run Code Online (Sandbox Code Playgroud)
但我注意到很多人这样做:
int *myIntPointer;
string *myString1, *myString2;
Run Code Online (Sandbox Code Playgroud)
哪一个比较常见?或者至少是一个很好的编程实践.
每次运行程序时,我都会收到java.lang.UnsatisfiedLinkError错误.我有一个本机,一个包装器,以及通过包装器调用本机的程序.
main.h
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#include<jni.h>
#include<iostream>
using namespace std;
extern "C"
{
JNIEXPORT void JNICALL native_MessageBox(string text, string title);
}
#endif
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include "main.h"
#include<windows.h>
#include<iostream>
using namespace std;
JNIEXPORT void JNICALL MsgBox(string text, string title)
{
MessageBox(NULL, text.c_str(), title.c_str(), MB_OK);
}
extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case …Run Code Online (Sandbox Code Playgroud)