我认为这是一个非常简单的问题,但我似乎无法通过谷歌搜索找到一个好的答案.
在用C++编程时(作为初学者),我经常喜欢使用类来组织我的代码.但是,当我只需要该类的一个对象时,是否有理由不创建类?当我学习面向对象编程时,我理解当你需要很多对象时,类是一种描述某些对象的方法.
我想我的问题很简单:如果只需要该类的一个对象,创建一个类是否常见?
在 Visual Studio 中的 C++ 项目中:
Project Properties> Linker> Input>Addtional Dependencies
我可以写入$(MyEnvVar)\folderA\*.lib以包含所有库。
但是假设 folderB 有许多子目录,每个子目录都有一组头文件。
如果我想一口气将它们全部包含在内,请在:
Project Properties> C/C++> General>Addtional Include Directories
我想写一些类似的东西:$(MyEnvVar)\folderB\*\或者$(MyEnvVar)\folderB\*\*\在每个文件夹中深入一个子目录。
这似乎不起作用。
(可选)我可以这样做,$(MyEnvVar)\folderB\并且在我的代码中,我会将每个文件包含为#include "name_of_subfolder\name_of_file.h". (这是我想要避免的。)
是否可以在一行中包含某个文件夹的所有子文件夹中的所有文件?
编辑:正确的函数名称,并添加#pragma一次
这是我的问题的一个非常强大的简化,但如果我这样做:
啊
#pragma once
static int testNumber = 10;
void changeTestNumber();
Run Code Online (Sandbox Code Playgroud)
A.cpp
#pragma once
#include "A.h"
void changeTestNumber()
{
testNumber = 15;
}
Run Code Online (Sandbox Code Playgroud)
BH
#pragma once
#include "A.h"
// some other stuff
Run Code Online (Sandbox Code Playgroud)
B.cpp
#pragma once
#include "B.h"
// some other stuff
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#pragma once
#include "B.h"
#include <iostream>
int main(){
changeTestNumber();
std::cout<<testNumber<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我在呼叫时没有得到testNumber = 15?当我使用包含在我的包含标题的标题中的函数时,会发生什么?如果我删除静在从INT testNumber,我会得到一些错误,我的testNumber被初始化两次.
当我这样做时,我的标题编译了两次吗?
提前致谢!
我一直在 Visual Studio 2015 中使用 C++ 开发一个小型 openGL 项目。我使用的是 GLFW 和 GLEW。
在出现一些硬件问题(硬盘)后,我在笔记本电脑上重新安装了 Windows。现在我尝试继续我的项目,该项目之前运行/调试没有问题,但现在出现错误。
glfwCreateWindow() 返回 NULL(即使没有任何 glfwWindowHints),并且 glwInit() 也会失败。
我以为这是因为我的驱动程序,但我已经更新了集成显卡 (Intel HD 4000) 和高性能 Nvidia GPU 的驱动程序。
使用openGL扩展查看器,我看到集成卡支持OpenGL 4.0,Nvidia GPU支持4.4。
这个项目相当大,所以为了消除问题,我创建了一个基于 GLFW 和 GLEW 的简单创建三角形代码,但我仍然从 glfwWindowCreate() 中收到错误。
我用谷歌搜索了一下,除了更新驱动程序之外,我找不到其他解决方案。什么可能导致此故障?
使用 OpenCascade C++ 库时,某些函数会向控制台/终端打印一些状态或响应。例如STEPCAFControl_Writer::perform()将打印出如下内容:
*******************************************************************
****** Statistics on Transfer (Write) ******
*******************************************************************
****** Transfer Mode = 0 I.E. As Is ******
****** Transferring Shape, ShapeType = 0 ******
** WorkSession : Sending all data
Step File Name : <file-name> Write Done
Run Code Online (Sandbox Code Playgroud)
到控制台。有办法防止这种情况吗?
如我错了请纠正我:
我知道当有一个成员是指针的类时,类对象的副本将导致表示相同内存地址的指针.这可能导致对一个类对象进行更改以影响此对象的所有副本.
对此的解决方案可以是重载=运算符.鉴于下面的示例,尝试创建动态数组类,为什么对MyArray1进行更改会更改MyArray2:
数组类:
#include <iostream>
#include <cstdlib>
class Array
{
public:
Array(int N){ //constructor sets size of array
size = N;
arr = new int[N];
}
~Array();
int size; //array elements
int *arr; //dynamic array pointer
//fill array with random values between 1 and 100
void fillArray() {
for (size_t i = 0; i < size; i++)
{arr[i] = std::rand()%100;}
}
//print out array to console
void printArray() {
for (size_t i = …Run Code Online (Sandbox Code Playgroud)