类作为cli c++中全局非常量变量的库
Class as library of global not const variables in cli c++
在只有全局变量的情况下,应该如何定义类?我做了这样的事:
public ref class Klient
{
public:
Klient(){}
// zmienne
static array<DWORD,2>^ klienty = gcnew array<DWORD,2>(40,2);
static int i = 0;
static DWORD pid;
static HANDLE handle;
static String^ nick;
//funkcje
};
但如果我包含它超过1次,它就不会编译并显示类错误的重新定义。
你保护好你的头了吗?在Visual Studio中,应该将此指令放在所有头文件的顶部:
#pragma once
这相当于经典的C++标头保护:
#ifndef HEADER_SYMBOL_X
#define HEADER_SYMBOL_X
// class declarations go here
#endif // HEADER_SYMBOL_X
如果您不保护您的头,C++/CLI确实会尝试在每个include上重新定义您的类。
您必须更加清楚,然后粘贴您得到的错误。此外,如果你有一个"ref"类,编译器会为你生成一个默认的构造函数,所以你不需要写一个。
这段代码对我有效,我能够将静态int值提取到我的WPF应用程序中:
#pragma once
#include "windows.h"
using namespace System;
namespace cppcli
{
public ref class Klient
{
public:
static array<DWORD,2>^ klienty = gcnew array<DWORD,2>(40,2);
static int i = 22;
static DWORD pid;
static HANDLE handle;
static String^ nick;
};
}
更新:
注意到你的评论,是的,你需要#pragma once
。我认为它在那里,因为它是由Visual Studio自动生成的,很高兴知道它的工作原理:-)
相关文章:
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 什么时候在C++中返回常量引用是个好主意
- 代理对象的常量正确性
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 通过多个头文件使用常量变量
- 在cuda线程之间共享大量常量数据
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 是默认情况下分配给char数组常量的值
- 私有类型的静态常量成员
- OpenGL大的3D纹理(>2GB)非常慢
- 类似枚举的计算常量
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 使用常量键但非常量值进行映射
- 为什么`is_open()`非常常量
- 从getter方法返回常量和非常量值
- 阻止const类函数在引用成员上调用非常常量类函数
- C++初始化非常大的常量数组,最佳实践
- 提高c++中非常大的常量的可读性