杂项待解决待解决问题汇总
ZEROKO14以下为本人待解决问题,有能解决的大佬看到,恳请帮忙解决一下,感激不尽。
问题汇总
问题1(已解决)
开发环境:
Microsoft Visual Studio Community 2015
版本 14.0.24720.00 Update 1
Microsoft .NET Framework
版本 4.8.03761
问题描述:
以下代码为什么出错?
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include"iostream" #include <string> using namespace std; class Building { friend void GoodGay::visit(); public: Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } string m_SittingRoom; private: string m_BedRoom; }; class GoodGay { public: GoodGay() { m_building = new Building; } void visit() { cout << "正在访问"<<this->m_building->m_SittingRoom << endl; cout << "正在访问" << this->m_building->m_BedRoom << endl; } Building* m_building; }; int main() { GoodGay gg; gg.visit(); system("pause"); return EXIT_SUCCESS; }
|
报错如下:

一定要写成如下代码才能执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include"iostream" #include <string> using namespace std; class Building; class GoodGay { public: GoodGay(); void visit(); Building* m_building; }; class Building { friend void GoodGay::visit(); public: Building(); string m_SittingRoom; private: string m_BedRoom; }; Building::Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } void GoodGay::visit() { cout << "正在访问" << m_building->m_SittingRoom << endl; cout << "正在访问" << m_building->m_BedRoom << endl; } GoodGay::GoodGay() { m_building = new Building; } int main() { GoodGay gg; gg.visit(); system("pause"); return EXIT_SUCCESS; }
|
已解决:先后声明问题。而且必须是声明和实现隔离。
问题2
1 2 3
| class MyClassA:virtual public MyClass class MyClassB:virtual public MyClass class MyClassC:public MyClassA,public MyClassB
|
由于虚继承的本身语义,MyClassC内必须重写fun函数?
问题3
开发环境:
Microsoft Visual Studio Community 2015
版本 14.0.24720.00 Update 1
Microsoft .NET Framework
版本 4.8.03761
dynamicArray.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #pragma once #ifdef _DEBUG #define New new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif #include <iostream> using namespace std;
template<class T> class DynamicArray { T* pArray=NULL; int mCapacity; int msize=0; public: DynamicArray();
DynamicArray(int capacity);
DynamicArray(const DynamicArray<T>& dynamicArray);
DynamicArray(T* t, int num);
~DynamicArray();
DynamicArray<T>& operator=(const DynamicArray<T>& dynamicArray);
DynamicArray<T> operator+(const DynamicArray<T>& dynamicArray);
friend ostream& operator<<<>(ostream& cout, const DynamicArray<T>& dynamicArray);
T& operator[](int index);
DynamicArray<T>& append_DynamicArray(const DynamicArray<T> dynamicArray);
DynamicArray<T>& insert_DynamicArray(int pos,T data);
DynamicArray<T>& delete_DynamicArray(int pos);
DynamicArray<T>& clear_DynamicArray();
DynamicArray<T>& Push_back_DynamicArray(T data);
T Pop_back_DynamicArray();
int getLength();
int GetCapacity(); };
|
dynamicArray.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
| #include "dynamicArray.h" #include <string.h> template<class T> DynamicArray<T>::DynamicArray() { mCapacity = 5; pArray = New T[mCapacity]; }
template<class T> DynamicArray<T>::DynamicArray(int capacity) { mCapacity = capacity; pArray = New T[mCapacity]; }
template<class T> DynamicArray<T>::DynamicArray(const DynamicArray<T>& dynamicArray) { mCapacity = dynamicArray.mCapacity; msize = dynamicArray.msize; pArray = New T[mCapacity]; memcpy(pArray, dynamicArray.pArray, sizeof(T)*mCapacity); }
template<class T> DynamicArray<T>::DynamicArray(T* t, int num) { mCapacity = num; msize = num; pArray = New T[mCapacity]; memcpy(pArray, t, sizeof(T)*mCapacity); }
template<class T> DynamicArray<T>::~DynamicArray() { if (pArray) { delete[] pArray; pArray = NULL; } }
template<class T> DynamicArray<T>& DynamicArray<T>::operator=(const DynamicArray<T>& dynamicArray) { if (pArray) { delete[] pArray; } mCapacity = dynamicArray.mCapacity; pArray = New T[mCapacity]; memcpy(pArray, dynamicArray.pArray, sizeof(T)*mCapacity); msize = dynamicArray.msize; return (DynamicArray<T>&)dynamicArray; }
template<class T> inline DynamicArray<T> DynamicArray<T>::operator+(const DynamicArray<T>& dynamicArray) { DynamicArray<T> tmpArray(msize +dynamicArray.msize); tmpArray.msize = msize + dynamicArray.msize; memcpy(tmpArray.pArray, pArray, sizeof(T)*msize); memcpy(tmpArray.pArray+msize, dynamicArray.pArray, sizeof(T)*dynamicArray.msize); return tmpArray; }
template<class T> inline T & DynamicArray<T>::operator[](int index) { return pArray[index]; }
template<class T> inline DynamicArray<T>& DynamicArray<T>::append_DynamicArray(const DynamicArray<T> dynamicArray) { if (mCapacity<msize+dynamicArray.msize) { mCapacity = msize + dynamicArray.msize; T* oldpArray = pArray; pArray = New T[mCapacity]; memcpy(pArray, oldpArray, sizeof(T)*msize); delete[] oldpArray; } memcpy(pArray+msize, dynamicArray.pArray, sizeof(T)*dynamicArray.msize); msize += dynamicArray.msize; return *this; }
template<class T> inline DynamicArray<T>& DynamicArray<T>::insert_DynamicArray(int pos, T data) { if (pos>msize) { pos = msize; } if (pos<0) { pos = 0; } if (msize==mCapacity) { mCapacity++; T* oldPArray = pArray; pArray = New T[mCapacity]; memcpy(pArray,oldPArray,sizeof(T)*pos); pArray[pos] = data; memcpy(pArray + pos + 1, oldPArray + pos, sizeof(T)*(msize - pos)); msize++; delete[] oldPArray; } else { memmove(pArray+pos+1, pArray+pos, sizeof(T)*(msize - pos)); pArray[pos] = data; msize++; } return *this; }
template<class T> inline DynamicArray<T>& DynamicArray<T>::delete_DynamicArray(int pos) { if (pos >= msize) { pos = msize-1; } if (pos < 0) { pos = 0; } memmove(pArray + pos, pArray + pos + 1,sizeof(T)*(msize - pos - 1)); msize--; return *this; }
template<class T> inline DynamicArray<T>& DynamicArray<T>::clear_DynamicArray() { msize = 0; return *this; }
template<class T> inline DynamicArray<T>& DynamicArray<T>::Push_back_DynamicArray(T data) { if (msize == mCapacity) { mCapacity++; T* oldPArray = pArray; pArray = New T[mCapacity]; memcpy(pArray, oldPArray, sizeof(T)*msize); pArray[msize] = data; msize++; delete[] oldPArray; } else { pArray[msize] = data; msize++; } return *this; }
template<class T> inline T DynamicArray<T>::Pop_back_DynamicArray() { if (this->m_Size == 0) { return NULL; } msize--; return pArray[msize]; }
template<class T> inline int DynamicArray<T>::getLength() { return msize; }
template<class T> inline int DynamicArray<T>::GetCapacity() { return mCapacity; }
template<class T> ostream& operator<<(ostream& cout, const DynamicArray<T>& dynamicArray) { for (int i = 0; i < dynamicArray.msize; i++) { cout << dynamicArray.pArray[i] << " "; } return cout; }
|
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #include <iostream> using namespace std; #include "dynamicArray.hpp"
#ifdef _DEBUG #define New new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif
#define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #include <string>
class Person { string mName; int mAge; public: Person(){ cout << "临时构造" << this << endl; } ~Person(){cout<<"析构"<<mName<<this<<endl;} Person(Person& p) { mAge=p.mAge ; mName=p.mName; cout<<"拷贝构造"<<mName<<this<<endl; } Person(string name,int age) { mName = name; mAge = age; cout << "有参构造" << mName << this << endl; } friend ostream& operator<<(ostream& cout, Person& p) { cout << "年龄:" << p.mAge << " 名称:" << p.mName<<endl; return cout; } };
void intDynamicArrayTest() { int a[5] = { 5,4,3,2,1 }; int b[5] = { 1,2,3,4,5 }; DynamicArray<int> dynamicArray(b, 5); DynamicArray<int> dynamicArray1(a, 5); dynamicArray.insert_DynamicArray(10, 9).insert_DynamicArray(10, 10); dynamicArray.delete_DynamicArray(10).delete_DynamicArray(10); cout<< dynamicArray <<endl; cout << dynamicArray1 << endl;
}
void personDynamicArrayTest() { Person p1("小明", 16); Person p2("小红", 22); Person p3("小张", 18); Person p4("小白", 20); DynamicArray<Person> dynamicArray; dynamicArray.insert_DynamicArray(0,p1); cout<<dynamicArray<<endl; dynamicArray.insert_DynamicArray(0, p4); cout << dynamicArray << endl;
}
int main() { personDynamicArrayTest(); _CrtDumpMemoryLeaks(); return 0; }
|
运行如下:

无法理解!
windows server 2012 r2安装vmware遇到的问题盘点
windows server 2012 r2要安装vmware2014版本,安装vmware2015及以上版本需要更新windows补丁包,十分繁琐,未尝试
apt镜像源,参考此处
Ubuntu22.04.4安装vmware-tools工具会出现段错误,参考此处
vmware端口转发设置,参考此处
设置linux系统的dns sudo vim /etc/resolv.conf
桥接模式详细步骤
ubuntu防火墙设置放行非常用端口 sudo ufw allow 8443/tcp
查看防火墙: sudo ufw status
查看端口使用
u盘检测:有,可以设置只读模式,可以限制无法插入外设,有白名单功能
软件安装:可以检测启用状态和是否安装状态,但是不能限制安装
涉密问题:肉眼不可见的屏幕水印,阻断部分应用外发敏感数据