我在向量中有一个愚蠢的怀疑.在下面的代码中
std::vector<char>ve(2); //creates a vector ve of size 2
std::vector<char>vechar[2]; //but what does it do ?
Run Code Online (Sandbox Code Playgroud)
在ve矢量我可以写
ve[0]='a';
ve[1]='b';
Run Code Online (Sandbox Code Playgroud)
但我不能写
vechar[0]='a';
vechar[1]='b';
Run Code Online (Sandbox Code Playgroud)
我也做不到
std::cout << " vector -->>" << vechar[0];
它显示错误.
我正在编写一个指向Derived类的指针的程序.这是我的代码,
#include <iostream>
using namespace std;
class base {
int i;
public:
void set_i(int num) { i=num; }
int get_i() { return i; }
};
class derived: public base {
int j;
public:
void set_j(int num) {j=num;}
int get_j() {return j;}
};
int main()
{
base *bp;
derived d[2];
bp = d;
d[0].set_i(1);
d[1].set_i(2);
cout << bp->get_i() << " ";
bp++;
cout << bp->get_i();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序显示1个正确的值和其他垃圾值,因为
BP ++;
将指针递增以指向类基类型的下一个对象,而不是类派生类型.
我们可以通过写作正确地显示答案
> bp =& d[0]; …Run Code Online (Sandbox Code Playgroud) 我正在阅读Generic Classes主题.我一度陷入困境.以下是一段代码
template <class StackType> class stack
{
StackType stck[10];
int tos;
public:
stack() {tos=0;}
void push(StackType ob);
StackType pop();
};
Run Code Online (Sandbox Code Playgroud)
我的问题是template <class StackType> class stack,有两个类(StackType和stack)?
我的意思是编译器如何将其视为使堆栈成为StackType的嵌套类或其他东西?
我在Visual C++ 2010中编写了一个函数重载程序.以下是我的代码
// overload.cpp : Defines the entry point for the console application.
#include<Windows.h>
#include<iostream>
#include<conio.h>
using namespace std;
//abs is overloaded in 3 types
int abs(int i);
double abs(double d);
long abs(long f);
void main()
{
cout<<abs(-10)<<"\n";
cout<<abs(-11.0)<<"\n";
cout<<abs(-9L)<<"\n";
getch();
}
int abs(int i)
{
cout<<"using integer abs()\n";
return i>0? -i:i;
}
double abs(double d)
{
cout<<"using double abs()\n";
return d>0? -d:d;
}
long abs (long l)
{
cout<<"using long abs()\n";
return l>0?-l:l;
}
Run Code Online (Sandbox Code Playgroud)
我在双abs和长abs功能方面遇到问题
1>c:\users\abc\documents\visual studio 2010\projects\overload\overload\overload.cpp(22): …Run Code Online (Sandbox Code Playgroud) 我在Thread中遇到问题.这是我的代码
private void CustomBrightActionPerformed(java.awt.event.ActionEvent evt) {
creed = new Thread() {
public void run() {
final JFrame jfmae = new JFrame("Set BrightNess");
JLabel jla = new JLabel("!@#$");
jfmae.add(jla, BorderLayout.CENTER);
jfmae.setSize(180, 180);
jfmae.addMouseListener(new Mymos());
jfmae.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
jfmae.dispose();
}
});
jfmae.setVisible(true);
}
};
creed.start();
}
class Mymos extends MouseAdapter {
public void mousePressed(java.awt.event.MouseEvent evt) {
try {
creed.sleep(3000);
} catch (InterruptedException e) {
}
Bigh2MousePressed(evt);
}
private void Bigh2MousePressed(java.awt.event.MouseEvent evt) {
System.out.println("dsds");
}
}
Run Code Online (Sandbox Code Playgroud)
CustomBrightActionPerformed
是一个处理动作事件并且 …
大家好,我对此代码有疑问
#include<iostream>
#define SQR(x)(x*x)
int main() {
int a, b=3;
a = SQR(b+1);
std::cout << a;
}
Run Code Online (Sandbox Code Playgroud)
结果是7而不是16.我无法理解它.
我正在阅读一本C++书籍并且遇到静态转换问题.这是一个功能:
void fun(int*pi)
{
void *pv = pi
int *pi2 = static_cast<int*>(pv); //explicit conversion back to int*
double *pd3 = static_cast<double*>(pv); //unsafe
}
Run Code Online (Sandbox Code Playgroud)
最后一句话:
double*pd3 = static_cast<double*>(pv);
Run Code Online (Sandbox Code Playgroud)
被认为是不安全的.我不明白为什么它被认为是不安全的.
我正在尝试制作一个用箭头键来控制盒子移动的程序.我的代码有问题.是否可以通过SendMessage向WM_PAINT发送一条消息,在按下左键时绘制一个新的矩形?以下是我的代码
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT: //LEFT MOVEMENT
SendMessage(hwnd,WM_PAINT,VK_LEFT,0);
break;
case VK_ESCAPE:
//FOR ENDING THE GAME WITH ESCAPE KEY
SendMessage(hwnd,WM_DESTROY,VK_ESCAPE,0);
break;
}
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Rectangle(hdc,x,600,x1,700);
if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);
}
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
where
x1=550;
x=500
Run Code Online (Sandbox Code Playgroud)
按下左键后,控件将转到WM_PAINT
因为我写的时候
if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);
}
Run Code Online (Sandbox Code Playgroud)
什么都没发生,但是当我写作
if(wParam==VK_ESCAPE)
PostQuitMessage(0);
return 0;
Run Code Online (Sandbox Code Playgroud)
窗口以退出键退出它不是最终代码.我只是想了解为什么VK_LEFT不执行?
我是java的新手,我的代码有问题.我试图从子类的构造函数中调用超类的构造函数.虽然我可以通过super来做,但我试图通过制作超类的对象来做其他方法子类的将要调用的构造函数Class A constructor.
class A
{
private int x;
A()
{
System.out.println("INISDE A");
}
A(int h)
{
System.out.println("a");
x = h;
}
}
class B extends A
{
int g, add;
B(int j, int h)
{
A a = new A(h);
g = j;
add = g + h;
}
void add()
{
System.out.println("SUM" + add);
}
}
public class Ja
{
public static void main(String[] args) {
// TODO code application logic here
B v …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,用于显示窗口发送8个不同键盘消息的窗口过程的所有信息.这是代码
/*--------------------------------------------------------
KEYVIEW1.C -- Displays Keyboard and Character Messages
(c) Charles Petzold, 1998
--------------------------------------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("KeyView1") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; …Run Code Online (Sandbox Code Playgroud)