Вопросы с тегом «c++»

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

4
Как работает библиотека импорта? Детали?
Я знаю, что фанатам это может показаться довольно простым. Но я хочу прояснить это. Когда я хочу использовать Win32 DLL, обычно я просто вызываю API, такие как LoadLibrary () и GetProcAdderss (). Но в последнее время я работаю с DirectX9, и мне нужно добавить файлы d3d9.lib , d3dx9.lib и т. …
88 c++  c  windows  visual-c++ 

5
Передача общих указателей в качестве аргументов
Если я объявляю объект, заключенный в общий указатель: std::shared_ptr<myClass> myClassObject(new myClass()); затем я хотел передать его как аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } Это просто увеличивает счетчик ссылок shared_pt, и все в порядке? Или он оставляет висящий указатель? Вы все еще должны …

3
Динамически загружать функцию из DLL
Я немного посмотрел на файлы .dll, я понимаю их использование и пытаюсь понять, как их использовать. Я создал файл .dll, содержащий функцию, которая возвращает целое число с именем funci (). используя этот код, я (думаю) импортировал в проект файл .dll (претензий нет): #include <windows.h> #include <iostream> int main() { HINSTANCE …
88 c++  winapi  dll 

7
Почему мы не можем объявить std :: vector <AbstractClass>?
Потратив некоторое время на разработку на C #, я заметил, что если вы объявляете абстрактный класс с целью использования его в качестве интерфейса, вы не можете создать экземпляр вектора этого абстрактного класса для хранения экземпляров дочерних классов. #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: …

5
Почему я могу получить доступ к закрытым переменным в конструкторе копирования?
Я узнал, что никогда не могу получить доступ к частной переменной, только с помощью функции get в классе. Но тогда почему я могу получить к нему доступ в конструкторе копирования? Пример: Field::Field(const Field&amp; f) { pFirst = new T[f.capacity()]; pLast = pFirst + (f.pLast - f.pFirst); pEnd = pFirst + …


5
C ++: Пространства имен - как правильно использовать в заголовочных и исходных файлах?
Рассмотрим пару из двух исходных файлов: файл объявления интерфейса ( *.hили *.hpp) и файл его реализации ( *.cpp). Пусть *.hфайл будет таким: namespace MyNamespace { class MyClass { public: int foo(); }; } Я видел две разные практики использования пространств имен в исходных файлах: *.cpp показываю практику №1: #include "MyClass.h" …

1
преобразование из производного * в базовое * существует, но недоступно
Почему следующий код вызывает эту ошибку, хотя c является структурой и по умолчанию имеет публичное наследование? struct c { protected: int i; public: c(int ii=0):i(ii){} virtual c *fun(); }; c* c::fun(){ cout&lt;&lt;"in c"; return &amp;c(); } class d : c { public: d(){} d* fun() { i = 9; cout&lt;&lt;"in …
88 c++  inheritance 

6
Как сравнить указатели?
Предположим, у меня есть 2 указателя: int *a = something; int *b = something; Если я хочу сравнить их и посмотреть, указывают ли они на одно и то же место, работает ли (a == b)?
88 c++  pointers 

7
Использование continue в операторе switch
Я хочу перейти от середины switchоператора к оператору цикла в следующем коде: while (something = get_something()) { switch (something) { case A: case B: break; default: // get another something and try again continue; } // do something for a handled something do_something(); } Это действительный способ использования continue? Являются …


4
C ++ auto и vs auto
При создании локальных переменных правильно использовать (const) auto&amp;или auto? например: SomeClass object; const auto result = object.SomeMethod(); или const auto&amp; result = object.SomeMethod(); Где SomeMethod () возвращает непримитивное значение - возможно, другой определяемый пользователем тип. const auto&amp; resultНасколько я понимаю, это правильно, поскольку результат, возвращаемый SomeMethod (), вызовет конструктор копирования …
88 c++  auto 

11
Как получить целочисленный идентификатор потока в c ++ 11
c ++ 11 имеет возможность получить текущий идентификатор потока, но он не может быть приведен к целочисленному типу: cout&lt;&lt;std::this_thread::get_id()&lt;&lt;endl; вывод: 139918771783456 cout&lt;&lt;(uint64_t)std::this_thread::get_id()&lt;&lt;endl; ошибка: недопустимое приведение из типа 'std :: thread :: id' к типу 'uint64_t', то же самое для других типов: недопустимое приведение из типа 'std :: thread :: id' …

7
Компиляция программы на C ++ с помощью gcc
Вопрос: Как скомпилировать программу на C ++ с помощью компилятора gcc? info.c: #include&lt;iostream&gt; using std::cout; using std::endl; int main() { #ifdef __cplusplus cout &lt;&lt; "C++ compiler in use and version is " &lt;&lt; __cplusplus &lt;&lt; endl; #endif cout &lt;&lt;"Version is " &lt;&lt; __STDC_VERSION__ &lt;&lt; endl; cout &lt;&lt; "Hi" &lt;&lt; __FILE__ …
88 c++  gcc  g++  gnu 

10
Преобразование указателя в целое число
Я пытаюсь адаптировать существующий код к 64-битной машине. Основная проблема заключается в том, что в одной функции предыдущий кодировщик использует аргумент void *, который преобразуется в подходящий тип в самой функции. Краткий пример: void function(MESSAGE_ID id, void* param) { if(id == FOO) { int real_param = (int)param; // ... } …
88 c++  gcc  casting  64-bit  32-bit 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.